[life-cycle] Use new WebService3
authorAsier Lostalé <asier.lostale@openbravo.com>
Tue, 29 Jun 2010 18:28:40 +0200
changeset 7861 c6c4e4df6d4f
parent 7860 35321ff29bc8
child 7862 79ce37c23aff
[life-cycle] Use new WebService3
src/build.xml
src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java
src/org/openbravo/erpCommon/ad_process/RegisterModule.java
src/org/openbravo/erpCommon/modules/ImportModule.java
src/org/openbravo/erpCommon/modules/VersionUtility.java
src/org/openbravo/services/webservice/Module.java
src/org/openbravo/services/webservice/Module1.java
src/org/openbravo/services/webservice/Module2.java
src/org/openbravo/services/webservice/ModuleDependency.java
src/org/openbravo/services/webservice/ModuleInstallDetail.java
src/org/openbravo/services/webservice/SimpleModule.java
src/org/openbravo/services/webservice/SimpleModule1.java
src/org/openbravo/services/webservice/SimpleModule2.java
src/org/openbravo/services/webservice/WebService3Impl.java
src/org/openbravo/services/webservice/WebService3ImplService.java
src/org/openbravo/services/webservice/WebService3ImplServiceLocator.java
src/org/openbravo/services/webservice/WebService3SoapBindingImpl.java
src/org/openbravo/services/webservice/WebService3SoapBindingStub.java
src/org/openbravo/services/webservice/deploy.wsdd
src/org/openbravo/services/webservice/undeploy.wsdd
--- a/src/build.xml	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/build.xml	Tue Jun 29 18:28:40 2010 +0200
@@ -887,9 +887,9 @@
     </delete>
 
     <mkdir dir="${build}" />
-     <axis-wsdl2java output="${base.src}" verbose="false" url="http://centralrepository.openbravo.com/openbravo/services/WebService2?wsdl" serverside="true" debug="false">
-      <mapping namespace="http://centralrepository.openbravo.com/openbravo/services/WebService2" package="org.openbravo.services.webservice" />
-      <mapping namespace="/services/WebService2" package="org.openbravo.services.webservice" />
+     <axis-wsdl2java output="${base.src}" verbose="false" url="http://centralrepository.openbravo.com/openbravo/services/WebService3?wsdl" serverside="true" debug="false">
+      <mapping namespace="http://centralrepository.openbravo.com/openbravo/services/WebService3" package="org.openbravo.services.webservice" />
+      <mapping namespace="/services/WebService3" package="org.openbravo.services.webservice" />
     </axis-wsdl2java>
   </target>
 
--- a/src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java	Tue Jun 29 18:28:40 2010 +0200
@@ -34,6 +34,7 @@
 import org.openbravo.base.filter.IsIDFilter;
 import org.openbravo.base.secureApp.HttpSecureAppServlet;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.data.FieldProvider;
 import org.openbravo.database.ConnectionProvider;
@@ -884,7 +885,7 @@
 
     if (!ak.isOPSInstance()) {
       for (Module mod : im.getModulesToInstall()) {
-        if (mod.getIsCommercial()) {
+        if (mod.isIsCommercial()) {
           if (selectedModule != null && !mod.getModuleID().equals(selectedModule.getModuleID())) {
             // Show only in case there are commercial dependencies
             showNotActivatedError = true;
@@ -895,7 +896,7 @@
         }
       }
       for (Module mod : im.getModulesToUpdate()) {
-        if (mod.getIsCommercial()) {
+        if (mod.isIsCommercial()) {
           if (selectedModule != null && !!mod.getModuleID().equals(selectedModule.getModuleID())) {
             // Show only in case there are commercial dependencies
             showNotActivatedError = true;
@@ -924,7 +925,7 @@
           firstModule = false;
         }
 
-        if (moduleID.equals(mod.getModuleID()) || !mod.getIsCommercial()) {
+        if (moduleID.equals(mod.getModuleID()) || !mod.isIsCommercial()) {
           continue; // skip details
         }
         String moduleDetail = moduleTemplate.replace("@MODULE@", mod.getName());
@@ -946,7 +947,7 @@
           firstModule = false;
         }
 
-        if (moduleID.equals(mod.getModuleID()) || !mod.getIsCommercial()) {
+        if (moduleID.equals(mod.getModuleID()) || !mod.isIsCommercial()) {
           continue; // skip details
         }
 
@@ -963,7 +964,7 @@
     } else {
 
       for (Module instMod : im.getModulesToInstall()) {
-        if (instMod.getIsCommercial()) {
+        if (instMod.isIsCommercial()) {
           CommercialModuleStatus moduleStatus = ak.isModuleSubscribed(instMod.getModuleID());
           if (ak.hasExpired() || moduleStatus == CommercialModuleStatus.EXPIRED) {
             notAllowedMods.add(instMod);
@@ -994,7 +995,7 @@
       }
 
       for (Module updMod : im.getModulesToUpdate()) {
-        if (updMod.getIsCommercial()) {
+        if (updMod.isIsCommercial()) {
           CommercialModuleStatus moduleStatus = ak.isModuleSubscribed(updMod.getModuleID());
           if (ak.hasExpired() || moduleStatus == CommercialModuleStatus.EXPIRED) {
             notAllowedMods.add(updMod);
--- a/src/org/openbravo/erpCommon/ad_process/RegisterModule.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_process/RegisterModule.java	Tue Jun 29 18:28:40 2010 +0200
@@ -30,8 +30,8 @@
 import org.openbravo.erpCommon.utility.OBError;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.services.webservice.Module;
-import org.openbravo.services.webservice.WebServiceImpl;
-import org.openbravo.services.webservice.WebServiceImplServiceLocator;
+import org.openbravo.services.webservice.WebService3Impl;
+import org.openbravo.services.webservice.WebService3ImplServiceLocator;
 import org.openbravo.xmlEngine.XmlDocument;
 
 public class RegisterModule extends HttpSecureAppServlet {
@@ -73,12 +73,12 @@
       module.setDbPrefix(data.dbPrefix);
       module.setDescription(data.description);
 
-      WebServiceImpl ws = null;
+      WebService3Impl ws = null;
       boolean error = false;
       try {
         // retrieve the module details from the webservice
-        WebServiceImplServiceLocator loc = new WebServiceImplServiceLocator();
-        ws = (WebServiceImpl) loc.getWebService();
+        WebService3ImplServiceLocator loc = new WebService3ImplServiceLocator();
+        ws = (WebService3Impl) loc.getWebService3();
       } catch (Exception e) {
         OBError message = new OBError();
         message.setType("Error");
@@ -98,7 +98,8 @@
           OBError message = new OBError();
           message.setType("Error");
           message.setTitle(Utility.messageBD(this, "Error", vars.getLanguage()));
-          message.setMessage(Utility.parseTranslation(this, vars, vars.getLanguage(), e.getMessage()));
+          message.setMessage(Utility.parseTranslation(this, vars, vars.getLanguage(), e
+              .getMessage()));
           vars.setMessage("RegisterModule", message);
           error = true;
           e.printStackTrace();
--- a/src/org/openbravo/erpCommon/modules/ImportModule.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/erpCommon/modules/ImportModule.java	Tue Jun 29 18:28:40 2010 +0200
@@ -72,8 +72,8 @@
 import org.openbravo.services.webservice.ModuleDependency;
 import org.openbravo.services.webservice.ModuleInstallDetail;
 import org.openbravo.services.webservice.SimpleModule;
-import org.openbravo.services.webservice.WebServiceImpl;
-import org.openbravo.services.webservice.WebServiceImplServiceLocator;
+import org.openbravo.services.webservice.WebService3Impl;
+import org.openbravo.services.webservice.WebService3ImplServiceLocator;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -1276,12 +1276,12 @@
       final HashMap<String, String> updateModules = new HashMap<String, String>();
       final String user = vars == null ? "0" : vars.getUser();
       ImportModuleData.insertLog(conn, user, "", "", "", "Scanning For Updates", "S");
-      WebServiceImplServiceLocator loc;
-      WebServiceImpl ws = null;
+      WebService3ImplServiceLocator loc;
+      WebService3Impl ws = null;
       SimpleModule[] updates;
       try {
-        loc = new WebServiceImplServiceLocator();
-        ws = loc.getWebService();
+        loc = new WebService3ImplServiceLocator();
+        ws = loc.getWebService3();
         updates = ws.moduleScanForUpdates(getInstalledModulesAndDeps(conn));
       } catch (final Exception e) {
         // do nothing just log the error
@@ -1481,14 +1481,14 @@
    */
   private RemoteModule getRemoteModule(String moduleVersionID) {
     RemoteModule remoteModule = new RemoteModule();
-    WebServiceImplServiceLocator loc;
-    WebServiceImpl ws = null;
+    WebService3ImplServiceLocator loc;
+    WebService3Impl ws = null;
     String strUrl = "";
     boolean isCommercial;
 
     try {
-      loc = new WebServiceImplServiceLocator();
-      ws = loc.getWebService();
+      loc = new WebService3ImplServiceLocator();
+      ws = loc.getWebService3();
     } catch (final Exception e) {
       log4j.error(e);
       addLog("@CouldntConnectToWS@", ImportModule.MSG_ERROR);
--- a/src/org/openbravo/erpCommon/modules/VersionUtility.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/erpCommon/modules/VersionUtility.java	Tue Jun 29 18:28:40 2010 +0200
@@ -38,8 +38,8 @@
 import org.openbravo.services.webservice.Module;
 import org.openbravo.services.webservice.ModuleDependency;
 import org.openbravo.services.webservice.ModuleInstallDetail;
-import org.openbravo.services.webservice.WebServiceImpl;
-import org.openbravo.services.webservice.WebServiceImplServiceLocator;
+import org.openbravo.services.webservice.WebService3Impl;
+import org.openbravo.services.webservice.WebService3ImplServiceLocator;
 
 public class VersionUtility {
   protected static ConnectionProvider pool;
@@ -518,8 +518,8 @@
    */
   static public ModuleInstallDetail checkRemote(VariablesSecureApp vars, String[] moduleVersionId,
       String[] moduleVersionToUpdateId, OBError obErrors) throws Exception {
-    WebServiceImplServiceLocator loc = new WebServiceImplServiceLocator();
-    WebServiceImpl ws = (WebServiceImpl) loc.getWebService();
+    WebService3ImplServiceLocator loc = new WebService3ImplServiceLocator();
+    WebService3Impl ws = (WebService3Impl) loc.getWebService3();
     String[] errors = new String[0];
 
     ModuleInstallDetail mid = ws.checkConsistency(ImportModule.getInstalledModulesAndDeps(pool),
--- a/src/org/openbravo/services/webservice/Module.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/Module.java	Tue Jun 29 18:28:40 2010 +0200
@@ -7,40 +7,8 @@
 
 package org.openbravo.services.webservice;
 
-public class Module  implements java.io.Serializable {
-    private java.lang.String author;
-
-    private java.lang.String dbPrefix;
-
-    private org.openbravo.services.webservice.ModuleDependency[] dependencies;
-
-    private java.lang.String description;
-
-    private java.lang.String help;
-
-    private org.openbravo.services.webservice.ModuleDependency[] includes;
-
-    private java.lang.String licenseAgreement;
-
-    private java.lang.String licenseType;
-
-    private java.lang.String moduleID;
-
-    private java.lang.String moduleVersionID;
-
-    private java.lang.String name;
-
-    private java.lang.String packageName;
-
-    private java.lang.String type;
-
-    private java.lang.String updateDescription;
-
-    private java.lang.String url;
-
-    private java.lang.String versionNo;
-
-    private java.lang.Boolean isCommercial;
+public class Module  extends org.openbravo.services.webservice.Module2  implements java.io.Serializable {
+    private java.util.HashMap additionalInfo;
 
     public Module() {
     }
@@ -62,364 +30,47 @@
            java.lang.String updateDescription,
            java.lang.String url,
            java.lang.String versionNo,
-           java.lang.Boolean isCommercial) {
-           this.author = author;
-           this.dbPrefix = dbPrefix;
-           this.dependencies = dependencies;
-           this.description = description;
-           this.help = help;
-           this.includes = includes;
-           this.licenseAgreement = licenseAgreement;
-           this.licenseType = licenseType;
-           this.moduleID = moduleID;
-           this.moduleVersionID = moduleVersionID;
-           this.name = name;
-           this.packageName = packageName;
-           this.type = type;
-           this.updateDescription = updateDescription;
-           this.url = url;
-           this.versionNo = versionNo;
-           this.isCommercial = isCommercial;
+           boolean isCommercial,
+           java.util.HashMap additionalInfo) {
+        super(
+            author,
+            dbPrefix,
+            dependencies,
+            description,
+            help,
+            includes,
+            licenseAgreement,
+            licenseType,
+            moduleID,
+            moduleVersionID,
+            name,
+            packageName,
+            type,
+            updateDescription,
+            url,
+            versionNo,
+            isCommercial);
+        this.additionalInfo = additionalInfo;
     }
 
 
     /**
-     * Gets the author value for this Module.
+     * Gets the additionalInfo value for this Module.
      * 
-     * @return author
+     * @return additionalInfo
      */
-    public java.lang.String getAuthor() {
-        return author;
+    public java.util.HashMap getAdditionalInfo() {
+        return additionalInfo;
     }
 
 
     /**
-     * Sets the author value for this Module.
+     * Sets the additionalInfo value for this Module.
      * 
-     * @param author
+     * @param additionalInfo
      */
-    public void setAuthor(java.lang.String author) {
-        this.author = author;
-    }
-
-
-    /**
-     * Gets the dbPrefix value for this Module.
-     * 
-     * @return dbPrefix
-     */
-    public java.lang.String getDbPrefix() {
-        return dbPrefix;
-    }
-
-
-    /**
-     * Sets the dbPrefix value for this Module.
-     * 
-     * @param dbPrefix
-     */
-    public void setDbPrefix(java.lang.String dbPrefix) {
-        this.dbPrefix = dbPrefix;
-    }
-
-
-    /**
-     * Gets the dependencies value for this Module.
-     * 
-     * @return dependencies
-     */
-    public org.openbravo.services.webservice.ModuleDependency[] getDependencies() {
-        return dependencies;
-    }
-
-
-    /**
-     * Sets the dependencies value for this Module.
-     * 
-     * @param dependencies
-     */
-    public void setDependencies(org.openbravo.services.webservice.ModuleDependency[] dependencies) {
-        this.dependencies = dependencies;
-    }
-
-
-    /**
-     * Gets the description value for this Module.
-     * 
-     * @return description
-     */
-    public java.lang.String getDescription() {
-        return description;
-    }
-
-
-    /**
-     * Sets the description value for this Module.
-     * 
-     * @param description
-     */
-    public void setDescription(java.lang.String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * Gets the help value for this Module.
-     * 
-     * @return help
-     */
-    public java.lang.String getHelp() {
-        return help;
-    }
-
-
-    /**
-     * Sets the help value for this Module.
-     * 
-     * @param help
-     */
-    public void setHelp(java.lang.String help) {
-        this.help = help;
-    }
-
-
-    /**
-     * Gets the includes value for this Module.
-     * 
-     * @return includes
-     */
-    public org.openbravo.services.webservice.ModuleDependency[] getIncludes() {
-        return includes;
-    }
-
-
-    /**
-     * Sets the includes value for this Module.
-     * 
-     * @param includes
-     */
-    public void setIncludes(org.openbravo.services.webservice.ModuleDependency[] includes) {
-        this.includes = includes;
-    }
-
-
-    /**
-     * Gets the licenseAgreement value for this Module.
-     * 
-     * @return licenseAgreement
-     */
-    public java.lang.String getLicenseAgreement() {
-        return licenseAgreement;
-    }
-
-
-    /**
-     * Sets the licenseAgreement value for this Module.
-     * 
-     * @param licenseAgreement
-     */
-    public void setLicenseAgreement(java.lang.String licenseAgreement) {
-        this.licenseAgreement = licenseAgreement;
-    }
-
-
-    /**
-     * Gets the licenseType value for this Module.
-     * 
-     * @return licenseType
-     */
-    public java.lang.String getLicenseType() {
-        return licenseType;
-    }
-
-
-    /**
-     * Sets the licenseType value for this Module.
-     * 
-     * @param licenseType
-     */
-    public void setLicenseType(java.lang.String licenseType) {
-        this.licenseType = licenseType;
-    }
-
-
-    /**
-     * Gets the moduleID value for this Module.
-     * 
-     * @return moduleID
-     */
-    public java.lang.String getModuleID() {
-        return moduleID;
-    }
-
-
-    /**
-     * Sets the moduleID value for this Module.
-     * 
-     * @param moduleID
-     */
-    public void setModuleID(java.lang.String moduleID) {
-        this.moduleID = moduleID;
-    }
-
-
-    /**
-     * Gets the moduleVersionID value for this Module.
-     * 
-     * @return moduleVersionID
-     */
-    public java.lang.String getModuleVersionID() {
-        return moduleVersionID;
-    }
-
-
-    /**
-     * Sets the moduleVersionID value for this Module.
-     * 
-     * @param moduleVersionID
-     */
-    public void setModuleVersionID(java.lang.String moduleVersionID) {
-        this.moduleVersionID = moduleVersionID;
-    }
-
-
-    /**
-     * Gets the name value for this Module.
-     * 
-     * @return name
-     */
-    public java.lang.String getName() {
-        return name;
-    }
-
-
-    /**
-     * Sets the name value for this Module.
-     * 
-     * @param name
-     */
-    public void setName(java.lang.String name) {
-        this.name = name;
-    }
-
-
-    /**
-     * Gets the packageName value for this Module.
-     * 
-     * @return packageName
-     */
-    public java.lang.String getPackageName() {
-        return packageName;
-    }
-
-
-    /**
-     * Sets the packageName value for this Module.
-     * 
-     * @param packageName
-     */
-    public void setPackageName(java.lang.String packageName) {
-        this.packageName = packageName;
-    }
-
-
-    /**
-     * Gets the type value for this Module.
-     * 
-     * @return type
-     */
-    public java.lang.String getType() {
-        return type;
-    }
-
-
-    /**
-     * Sets the type value for this Module.
-     * 
-     * @param type
-     */
-    public void setType(java.lang.String type) {
-        this.type = type;
-    }
-
-
-    /**
-     * Gets the updateDescription value for this Module.
-     * 
-     * @return updateDescription
-     */
-    public java.lang.String getUpdateDescription() {
-        return updateDescription;
-    }
-
-
-    /**
-     * Sets the updateDescription value for this Module.
-     * 
-     * @param updateDescription
-     */
-    public void setUpdateDescription(java.lang.String updateDescription) {
-        this.updateDescription = updateDescription;
-    }
-
-
-    /**
-     * Gets the url value for this Module.
-     * 
-     * @return url
-     */
-    public java.lang.String getUrl() {
-        return url;
-    }
-
-
-    /**
-     * Sets the url value for this Module.
-     * 
-     * @param url
-     */
-    public void setUrl(java.lang.String url) {
-        this.url = url;
-    }
-
-
-    /**
-     * Gets the versionNo value for this Module.
-     * 
-     * @return versionNo
-     */
-    public java.lang.String getVersionNo() {
-        return versionNo;
-    }
-
-
-    /**
-     * Sets the versionNo value for this Module.
-     * 
-     * @param versionNo
-     */
-    public void setVersionNo(java.lang.String versionNo) {
-        this.versionNo = versionNo;
-    }
-
-
-    /**
-     * Gets the isCommercial value for this Module.
-     * 
-     * @return isCommercial
-     */
-    public java.lang.Boolean getIsCommercial() {
-        return isCommercial;
-    }
-
-
-    /**
-     * Sets the isCommercial value for this Module.
-     * 
-     * @param isCommercial
-     */
-    public void setIsCommercial(java.lang.Boolean isCommercial) {
-        this.isCommercial = isCommercial;
+    public void setAdditionalInfo(java.util.HashMap additionalInfo) {
+        this.additionalInfo = additionalInfo;
     }
 
     private java.lang.Object __equalsCalc = null;
@@ -433,58 +84,10 @@
         }
         __equalsCalc = obj;
         boolean _equals;
-        _equals = true && 
-            ((this.author==null && other.getAuthor()==null) || 
-             (this.author!=null &&
-              this.author.equals(other.getAuthor()))) &&
-            ((this.dbPrefix==null && other.getDbPrefix()==null) || 
-             (this.dbPrefix!=null &&
-              this.dbPrefix.equals(other.getDbPrefix()))) &&
-            ((this.dependencies==null && other.getDependencies()==null) || 
-             (this.dependencies!=null &&
-              java.util.Arrays.equals(this.dependencies, other.getDependencies()))) &&
-            ((this.description==null && other.getDescription()==null) || 
-             (this.description!=null &&
-              this.description.equals(other.getDescription()))) &&
-            ((this.help==null && other.getHelp()==null) || 
-             (this.help!=null &&
-              this.help.equals(other.getHelp()))) &&
-            ((this.includes==null && other.getIncludes()==null) || 
-             (this.includes!=null &&
-              java.util.Arrays.equals(this.includes, other.getIncludes()))) &&
-            ((this.licenseAgreement==null && other.getLicenseAgreement()==null) || 
-             (this.licenseAgreement!=null &&
-              this.licenseAgreement.equals(other.getLicenseAgreement()))) &&
-            ((this.licenseType==null && other.getLicenseType()==null) || 
-             (this.licenseType!=null &&
-              this.licenseType.equals(other.getLicenseType()))) &&
-            ((this.moduleID==null && other.getModuleID()==null) || 
-             (this.moduleID!=null &&
-              this.moduleID.equals(other.getModuleID()))) &&
-            ((this.moduleVersionID==null && other.getModuleVersionID()==null) || 
-             (this.moduleVersionID!=null &&
-              this.moduleVersionID.equals(other.getModuleVersionID()))) &&
-            ((this.name==null && other.getName()==null) || 
-             (this.name!=null &&
-              this.name.equals(other.getName()))) &&
-            ((this.packageName==null && other.getPackageName()==null) || 
-             (this.packageName!=null &&
-              this.packageName.equals(other.getPackageName()))) &&
-            ((this.type==null && other.getType()==null) || 
-             (this.type!=null &&
-              this.type.equals(other.getType()))) &&
-            ((this.updateDescription==null && other.getUpdateDescription()==null) || 
-             (this.updateDescription!=null &&
-              this.updateDescription.equals(other.getUpdateDescription()))) &&
-            ((this.url==null && other.getUrl()==null) || 
-             (this.url!=null &&
-              this.url.equals(other.getUrl()))) &&
-            ((this.versionNo==null && other.getVersionNo()==null) || 
-             (this.versionNo!=null &&
-              this.versionNo.equals(other.getVersionNo()))) &&
-            ((this.isCommercial==null && other.getIsCommercial()==null) || 
-             (this.isCommercial!=null &&
-              this.isCommercial.equals(other.getIsCommercial())));
+        _equals = super.equals(obj) && 
+            ((this.additionalInfo==null && other.getAdditionalInfo()==null) || 
+             (this.additionalInfo!=null &&
+              this.additionalInfo.equals(other.getAdditionalInfo())));
         __equalsCalc = null;
         return _equals;
     }
@@ -495,73 +98,9 @@
             return 0;
         }
         __hashCodeCalc = true;
-        int _hashCode = 1;
-        if (getAuthor() != null) {
-            _hashCode += getAuthor().hashCode();
-        }
-        if (getDbPrefix() != null) {
-            _hashCode += getDbPrefix().hashCode();
-        }
-        if (getDependencies() != null) {
-            for (int i=0;
-                 i<java.lang.reflect.Array.getLength(getDependencies());
-                 i++) {
-                java.lang.Object obj = java.lang.reflect.Array.get(getDependencies(), i);
-                if (obj != null &&
-                    !obj.getClass().isArray()) {
-                    _hashCode += obj.hashCode();
-                }
-            }
-        }
-        if (getDescription() != null) {
-            _hashCode += getDescription().hashCode();
-        }
-        if (getHelp() != null) {
-            _hashCode += getHelp().hashCode();
-        }
-        if (getIncludes() != null) {
-            for (int i=0;
-                 i<java.lang.reflect.Array.getLength(getIncludes());
-                 i++) {
-                java.lang.Object obj = java.lang.reflect.Array.get(getIncludes(), i);
-                if (obj != null &&
-                    !obj.getClass().isArray()) {
-                    _hashCode += obj.hashCode();
-                }
-            }
-        }
-        if (getLicenseAgreement() != null) {
-            _hashCode += getLicenseAgreement().hashCode();
-        }
-        if (getLicenseType() != null) {
-            _hashCode += getLicenseType().hashCode();
-        }
-        if (getModuleID() != null) {
-            _hashCode += getModuleID().hashCode();
-        }
-        if (getModuleVersionID() != null) {
-            _hashCode += getModuleVersionID().hashCode();
-        }
-        if (getName() != null) {
-            _hashCode += getName().hashCode();
-        }
-        if (getPackageName() != null) {
-            _hashCode += getPackageName().hashCode();
-        }
-        if (getType() != null) {
-            _hashCode += getType().hashCode();
-        }
-        if (getUpdateDescription() != null) {
-            _hashCode += getUpdateDescription().hashCode();
-        }
-        if (getUrl() != null) {
-            _hashCode += getUrl().hashCode();
-        }
-        if (getVersionNo() != null) {
-            _hashCode += getVersionNo().hashCode();
-        }
-        if (getIsCommercial() != null) {
-            _hashCode += getIsCommercial().hashCode();
+        int _hashCode = super.hashCode();
+        if (getAdditionalInfo() != null) {
+            _hashCode += getAdditionalInfo().hashCode();
         }
         __hashCodeCalc = false;
         return _hashCode;
@@ -572,107 +111,11 @@
         new org.apache.axis.description.TypeDesc(Module.class, true);
 
     static {
-        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "Module"));
+        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "Module"));
         org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("author");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "author"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("dbPrefix");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "dbPrefix"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("dependencies");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "dependencies"));
-        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "ModuleDependency"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("description");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "description"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("help");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "help"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("includes");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "includes"));
-        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "ModuleDependency"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("licenseAgreement");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseAgreement"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("licenseType");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseType"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("moduleID");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleID"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("moduleVersionID");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleVersionID"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("name");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "name"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("packageName");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "packageName"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("type");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "type"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("updateDescription");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "updateDescription"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("url");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("versionNo");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "versionNo"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("isCommercial");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "isCommercial"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+        elemField.setFieldName("additionalInfo");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "additionalInfo"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://xml.apache.org/xml-soap", "Map"));
         elemField.setNillable(true);
         typeDesc.addFieldDesc(elemField);
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/Module1.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,675 @@
+/**
+ * Module1.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class Module1  implements java.io.Serializable {
+    private java.lang.String author;
+
+    private java.lang.String dbPrefix;
+
+    private org.openbravo.services.webservice.ModuleDependency[] dependencies;
+
+    private java.lang.String description;
+
+    private java.lang.String help;
+
+    private org.openbravo.services.webservice.ModuleDependency[] includes;
+
+    private java.lang.String licenseAgreement;
+
+    private java.lang.String licenseType;
+
+    private java.lang.String moduleID;
+
+    private java.lang.String moduleVersionID;
+
+    private java.lang.String name;
+
+    private java.lang.String packageName;
+
+    private java.lang.String type;
+
+    private java.lang.String updateDescription;
+
+    private java.lang.String url;
+
+    private java.lang.String versionNo;
+
+    public Module1() {
+    }
+
+    public Module1(
+           java.lang.String author,
+           java.lang.String dbPrefix,
+           org.openbravo.services.webservice.ModuleDependency[] dependencies,
+           java.lang.String description,
+           java.lang.String help,
+           org.openbravo.services.webservice.ModuleDependency[] includes,
+           java.lang.String licenseAgreement,
+           java.lang.String licenseType,
+           java.lang.String moduleID,
+           java.lang.String moduleVersionID,
+           java.lang.String name,
+           java.lang.String packageName,
+           java.lang.String type,
+           java.lang.String updateDescription,
+           java.lang.String url,
+           java.lang.String versionNo) {
+           this.author = author;
+           this.dbPrefix = dbPrefix;
+           this.dependencies = dependencies;
+           this.description = description;
+           this.help = help;
+           this.includes = includes;
+           this.licenseAgreement = licenseAgreement;
+           this.licenseType = licenseType;
+           this.moduleID = moduleID;
+           this.moduleVersionID = moduleVersionID;
+           this.name = name;
+           this.packageName = packageName;
+           this.type = type;
+           this.updateDescription = updateDescription;
+           this.url = url;
+           this.versionNo = versionNo;
+    }
+
+
+    /**
+     * Gets the author value for this Module1.
+     * 
+     * @return author
+     */
+    public java.lang.String getAuthor() {
+        return author;
+    }
+
+
+    /**
+     * Sets the author value for this Module1.
+     * 
+     * @param author
+     */
+    public void setAuthor(java.lang.String author) {
+        this.author = author;
+    }
+
+
+    /**
+     * Gets the dbPrefix value for this Module1.
+     * 
+     * @return dbPrefix
+     */
+    public java.lang.String getDbPrefix() {
+        return dbPrefix;
+    }
+
+
+    /**
+     * Sets the dbPrefix value for this Module1.
+     * 
+     * @param dbPrefix
+     */
+    public void setDbPrefix(java.lang.String dbPrefix) {
+        this.dbPrefix = dbPrefix;
+    }
+
+
+    /**
+     * Gets the dependencies value for this Module1.
+     * 
+     * @return dependencies
+     */
+    public org.openbravo.services.webservice.ModuleDependency[] getDependencies() {
+        return dependencies;
+    }
+
+
+    /**
+     * Sets the dependencies value for this Module1.
+     * 
+     * @param dependencies
+     */
+    public void setDependencies(org.openbravo.services.webservice.ModuleDependency[] dependencies) {
+        this.dependencies = dependencies;
+    }
+
+
+    /**
+     * Gets the description value for this Module1.
+     * 
+     * @return description
+     */
+    public java.lang.String getDescription() {
+        return description;
+    }
+
+
+    /**
+     * Sets the description value for this Module1.
+     * 
+     * @param description
+     */
+    public void setDescription(java.lang.String description) {
+        this.description = description;
+    }
+
+
+    /**
+     * Gets the help value for this Module1.
+     * 
+     * @return help
+     */
+    public java.lang.String getHelp() {
+        return help;
+    }
+
+
+    /**
+     * Sets the help value for this Module1.
+     * 
+     * @param help
+     */
+    public void setHelp(java.lang.String help) {
+        this.help = help;
+    }
+
+
+    /**
+     * Gets the includes value for this Module1.
+     * 
+     * @return includes
+     */
+    public org.openbravo.services.webservice.ModuleDependency[] getIncludes() {
+        return includes;
+    }
+
+
+    /**
+     * Sets the includes value for this Module1.
+     * 
+     * @param includes
+     */
+    public void setIncludes(org.openbravo.services.webservice.ModuleDependency[] includes) {
+        this.includes = includes;
+    }
+
+
+    /**
+     * Gets the licenseAgreement value for this Module1.
+     * 
+     * @return licenseAgreement
+     */
+    public java.lang.String getLicenseAgreement() {
+        return licenseAgreement;
+    }
+
+
+    /**
+     * Sets the licenseAgreement value for this Module1.
+     * 
+     * @param licenseAgreement
+     */
+    public void setLicenseAgreement(java.lang.String licenseAgreement) {
+        this.licenseAgreement = licenseAgreement;
+    }
+
+
+    /**
+     * Gets the licenseType value for this Module1.
+     * 
+     * @return licenseType
+     */
+    public java.lang.String getLicenseType() {
+        return licenseType;
+    }
+
+
+    /**
+     * Sets the licenseType value for this Module1.
+     * 
+     * @param licenseType
+     */
+    public void setLicenseType(java.lang.String licenseType) {
+        this.licenseType = licenseType;
+    }
+
+
+    /**
+     * Gets the moduleID value for this Module1.
+     * 
+     * @return moduleID
+     */
+    public java.lang.String getModuleID() {
+        return moduleID;
+    }
+
+
+    /**
+     * Sets the moduleID value for this Module1.
+     * 
+     * @param moduleID
+     */
+    public void setModuleID(java.lang.String moduleID) {
+        this.moduleID = moduleID;
+    }
+
+
+    /**
+     * Gets the moduleVersionID value for this Module1.
+     * 
+     * @return moduleVersionID
+     */
+    public java.lang.String getModuleVersionID() {
+        return moduleVersionID;
+    }
+
+
+    /**
+     * Sets the moduleVersionID value for this Module1.
+     * 
+     * @param moduleVersionID
+     */
+    public void setModuleVersionID(java.lang.String moduleVersionID) {
+        this.moduleVersionID = moduleVersionID;
+    }
+
+
+    /**
+     * Gets the name value for this Module1.
+     * 
+     * @return name
+     */
+    public java.lang.String getName() {
+        return name;
+    }
+
+
+    /**
+     * Sets the name value for this Module1.
+     * 
+     * @param name
+     */
+    public void setName(java.lang.String name) {
+        this.name = name;
+    }
+
+
+    /**
+     * Gets the packageName value for this Module1.
+     * 
+     * @return packageName
+     */
+    public java.lang.String getPackageName() {
+        return packageName;
+    }
+
+
+    /**
+     * Sets the packageName value for this Module1.
+     * 
+     * @param packageName
+     */
+    public void setPackageName(java.lang.String packageName) {
+        this.packageName = packageName;
+    }
+
+
+    /**
+     * Gets the type value for this Module1.
+     * 
+     * @return type
+     */
+    public java.lang.String getType() {
+        return type;
+    }
+
+
+    /**
+     * Sets the type value for this Module1.
+     * 
+     * @param type
+     */
+    public void setType(java.lang.String type) {
+        this.type = type;
+    }
+
+
+    /**
+     * Gets the updateDescription value for this Module1.
+     * 
+     * @return updateDescription
+     */
+    public java.lang.String getUpdateDescription() {
+        return updateDescription;
+    }
+
+
+    /**
+     * Sets the updateDescription value for this Module1.
+     * 
+     * @param updateDescription
+     */
+    public void setUpdateDescription(java.lang.String updateDescription) {
+        this.updateDescription = updateDescription;
+    }
+
+
+    /**
+     * Gets the url value for this Module1.
+     * 
+     * @return url
+     */
+    public java.lang.String getUrl() {
+        return url;
+    }
+
+
+    /**
+     * Sets the url value for this Module1.
+     * 
+     * @param url
+     */
+    public void setUrl(java.lang.String url) {
+        this.url = url;
+    }
+
+
+    /**
+     * Gets the versionNo value for this Module1.
+     * 
+     * @return versionNo
+     */
+    public java.lang.String getVersionNo() {
+        return versionNo;
+    }
+
+
+    /**
+     * Sets the versionNo value for this Module1.
+     * 
+     * @param versionNo
+     */
+    public void setVersionNo(java.lang.String versionNo) {
+        this.versionNo = versionNo;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof Module1)) return false;
+        Module1 other = (Module1) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = true && 
+            ((this.author==null && other.getAuthor()==null) || 
+             (this.author!=null &&
+              this.author.equals(other.getAuthor()))) &&
+            ((this.dbPrefix==null && other.getDbPrefix()==null) || 
+             (this.dbPrefix!=null &&
+              this.dbPrefix.equals(other.getDbPrefix()))) &&
+            ((this.dependencies==null && other.getDependencies()==null) || 
+             (this.dependencies!=null &&
+              java.util.Arrays.equals(this.dependencies, other.getDependencies()))) &&
+            ((this.description==null && other.getDescription()==null) || 
+             (this.description!=null &&
+              this.description.equals(other.getDescription()))) &&
+            ((this.help==null && other.getHelp()==null) || 
+             (this.help!=null &&
+              this.help.equals(other.getHelp()))) &&
+            ((this.includes==null && other.getIncludes()==null) || 
+             (this.includes!=null &&
+              java.util.Arrays.equals(this.includes, other.getIncludes()))) &&
+            ((this.licenseAgreement==null && other.getLicenseAgreement()==null) || 
+             (this.licenseAgreement!=null &&
+              this.licenseAgreement.equals(other.getLicenseAgreement()))) &&
+            ((this.licenseType==null && other.getLicenseType()==null) || 
+             (this.licenseType!=null &&
+              this.licenseType.equals(other.getLicenseType()))) &&
+            ((this.moduleID==null && other.getModuleID()==null) || 
+             (this.moduleID!=null &&
+              this.moduleID.equals(other.getModuleID()))) &&
+            ((this.moduleVersionID==null && other.getModuleVersionID()==null) || 
+             (this.moduleVersionID!=null &&
+              this.moduleVersionID.equals(other.getModuleVersionID()))) &&
+            ((this.name==null && other.getName()==null) || 
+             (this.name!=null &&
+              this.name.equals(other.getName()))) &&
+            ((this.packageName==null && other.getPackageName()==null) || 
+             (this.packageName!=null &&
+              this.packageName.equals(other.getPackageName()))) &&
+            ((this.type==null && other.getType()==null) || 
+             (this.type!=null &&
+              this.type.equals(other.getType()))) &&
+            ((this.updateDescription==null && other.getUpdateDescription()==null) || 
+             (this.updateDescription!=null &&
+              this.updateDescription.equals(other.getUpdateDescription()))) &&
+            ((this.url==null && other.getUrl()==null) || 
+             (this.url!=null &&
+              this.url.equals(other.getUrl()))) &&
+            ((this.versionNo==null && other.getVersionNo()==null) || 
+             (this.versionNo!=null &&
+              this.versionNo.equals(other.getVersionNo())));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = 1;
+        if (getAuthor() != null) {
+            _hashCode += getAuthor().hashCode();
+        }
+        if (getDbPrefix() != null) {
+            _hashCode += getDbPrefix().hashCode();
+        }
+        if (getDependencies() != null) {
+            for (int i=0;
+                 i<java.lang.reflect.Array.getLength(getDependencies());
+                 i++) {
+                java.lang.Object obj = java.lang.reflect.Array.get(getDependencies(), i);
+                if (obj != null &&
+                    !obj.getClass().isArray()) {
+                    _hashCode += obj.hashCode();
+                }
+            }
+        }
+        if (getDescription() != null) {
+            _hashCode += getDescription().hashCode();
+        }
+        if (getHelp() != null) {
+            _hashCode += getHelp().hashCode();
+        }
+        if (getIncludes() != null) {
+            for (int i=0;
+                 i<java.lang.reflect.Array.getLength(getIncludes());
+                 i++) {
+                java.lang.Object obj = java.lang.reflect.Array.get(getIncludes(), i);
+                if (obj != null &&
+                    !obj.getClass().isArray()) {
+                    _hashCode += obj.hashCode();
+                }
+            }
+        }
+        if (getLicenseAgreement() != null) {
+            _hashCode += getLicenseAgreement().hashCode();
+        }
+        if (getLicenseType() != null) {
+            _hashCode += getLicenseType().hashCode();
+        }
+        if (getModuleID() != null) {
+            _hashCode += getModuleID().hashCode();
+        }
+        if (getModuleVersionID() != null) {
+            _hashCode += getModuleVersionID().hashCode();
+        }
+        if (getName() != null) {
+            _hashCode += getName().hashCode();
+        }
+        if (getPackageName() != null) {
+            _hashCode += getPackageName().hashCode();
+        }
+        if (getType() != null) {
+            _hashCode += getType().hashCode();
+        }
+        if (getUpdateDescription() != null) {
+            _hashCode += getUpdateDescription().hashCode();
+        }
+        if (getUrl() != null) {
+            _hashCode += getUrl().hashCode();
+        }
+        if (getVersionNo() != null) {
+            _hashCode += getVersionNo().hashCode();
+        }
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(Module1.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "Module1"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("author");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "author"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("dbPrefix");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "dbPrefix"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("dependencies");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "dependencies"));
+        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "ModuleDependency"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("description");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "description"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("help");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "help"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("includes");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "includes"));
+        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "ModuleDependency"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("licenseAgreement");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseAgreement"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("licenseType");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseType"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("moduleID");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleID"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("moduleVersionID");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleVersionID"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("name");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "name"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("packageName");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "packageName"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("type");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "type"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("updateDescription");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "updateDescription"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("url");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("versionNo");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "versionNo"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/Module2.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,148 @@
+/**
+ * Module2.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class Module2  extends org.openbravo.services.webservice.Module1  implements java.io.Serializable {
+    private boolean isCommercial;
+
+    public Module2() {
+    }
+
+    public Module2(
+           java.lang.String author,
+           java.lang.String dbPrefix,
+           org.openbravo.services.webservice.ModuleDependency[] dependencies,
+           java.lang.String description,
+           java.lang.String help,
+           org.openbravo.services.webservice.ModuleDependency[] includes,
+           java.lang.String licenseAgreement,
+           java.lang.String licenseType,
+           java.lang.String moduleID,
+           java.lang.String moduleVersionID,
+           java.lang.String name,
+           java.lang.String packageName,
+           java.lang.String type,
+           java.lang.String updateDescription,
+           java.lang.String url,
+           java.lang.String versionNo,
+           boolean isCommercial) {
+        super(
+            author,
+            dbPrefix,
+            dependencies,
+            description,
+            help,
+            includes,
+            licenseAgreement,
+            licenseType,
+            moduleID,
+            moduleVersionID,
+            name,
+            packageName,
+            type,
+            updateDescription,
+            url,
+            versionNo);
+        this.isCommercial = isCommercial;
+    }
+
+
+    /**
+     * Gets the isCommercial value for this Module2.
+     * 
+     * @return isCommercial
+     */
+    public boolean isIsCommercial() {
+        return isCommercial;
+    }
+
+
+    /**
+     * Sets the isCommercial value for this Module2.
+     * 
+     * @param isCommercial
+     */
+    public void setIsCommercial(boolean isCommercial) {
+        this.isCommercial = isCommercial;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof Module2)) return false;
+        Module2 other = (Module2) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj) && 
+            this.isCommercial == other.isIsCommercial();
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        _hashCode += (isIsCommercial() ? Boolean.TRUE : Boolean.FALSE).hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(Module2.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "Module2"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("isCommercial");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "isCommercial"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}
--- a/src/org/openbravo/services/webservice/ModuleDependency.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/ModuleDependency.java	Tue Jun 29 18:28:40 2010 +0200
@@ -196,7 +196,7 @@
         new org.apache.axis.description.TypeDesc(ModuleDependency.class, true);
 
     static {
-        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "ModuleDependency"));
+        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "ModuleDependency"));
         org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
         elemField.setFieldName("moduleID");
         elemField.setXmlName(new javax.xml.namespace.QName("", "moduleID"));
--- a/src/org/openbravo/services/webservice/ModuleInstallDetail.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/ModuleInstallDetail.java	Tue Jun 29 18:28:40 2010 +0200
@@ -186,7 +186,7 @@
         new org.apache.axis.description.TypeDesc(ModuleInstallDetail.class, true);
 
     static {
-        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "ModuleInstallDetail"));
+        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "ModuleInstallDetail"));
         org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
         elemField.setFieldName("dependencyErrors");
         elemField.setXmlName(new javax.xml.namespace.QName("", "dependencyErrors"));
@@ -196,13 +196,13 @@
         elemField = new org.apache.axis.description.ElementDesc();
         elemField.setFieldName("modulesToInstall");
         elemField.setXmlName(new javax.xml.namespace.QName("", "modulesToInstall"));
-        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "Module"));
+        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "Module"));
         elemField.setNillable(true);
         typeDesc.addFieldDesc(elemField);
         elemField = new org.apache.axis.description.ElementDesc();
         elemField.setFieldName("modulesToUpdate");
         elemField.setXmlName(new javax.xml.namespace.QName("", "modulesToUpdate"));
-        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "Module"));
+        elemField.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "Module"));
         elemField.setNillable(true);
         typeDesc.addFieldDesc(elemField);
         elemField = new org.apache.axis.description.ElementDesc();
--- a/src/org/openbravo/services/webservice/SimpleModule.java	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/SimpleModule.java	Tue Jun 29 18:28:40 2010 +0200
@@ -7,32 +7,8 @@
 
 package org.openbravo.services.webservice;
 
-public class SimpleModule  implements java.io.Serializable {
-    private java.lang.String author;
-
-    private java.lang.String description;
-
-    private java.lang.String help;
-
-    private java.lang.String licenseAgreement;
-
-    private java.lang.String licenseType;
-
-    private java.lang.String moduleID;
-
-    private java.lang.String moduleVersionID;
-
-    private java.lang.String name;
-
-    private java.lang.String type;
-
-    private java.lang.String updateDescription;
-
-    private java.lang.String url;
-
-    private java.lang.String versionNo;
-
-    private java.lang.Boolean isCommercial;
+public class SimpleModule  extends org.openbravo.services.webservice.SimpleModule2  implements java.io.Serializable {
+    private java.util.HashMap additionalInfo;
 
     public SimpleModule() {
     }
@@ -50,280 +26,43 @@
            java.lang.String updateDescription,
            java.lang.String url,
            java.lang.String versionNo,
-           java.lang.Boolean isCommercial) {
-           this.author = author;
-           this.description = description;
-           this.help = help;
-           this.licenseAgreement = licenseAgreement;
-           this.licenseType = licenseType;
-           this.moduleID = moduleID;
-           this.moduleVersionID = moduleVersionID;
-           this.name = name;
-           this.type = type;
-           this.updateDescription = updateDescription;
-           this.url = url;
-           this.versionNo = versionNo;
-           this.isCommercial = isCommercial;
+           boolean isCommercial,
+           java.util.HashMap additionalInfo) {
+        super(
+            author,
+            description,
+            help,
+            licenseAgreement,
+            licenseType,
+            moduleID,
+            moduleVersionID,
+            name,
+            type,
+            updateDescription,
+            url,
+            versionNo,
+            isCommercial);
+        this.additionalInfo = additionalInfo;
     }
 
 
     /**
-     * Gets the author value for this SimpleModule.
+     * Gets the additionalInfo value for this SimpleModule.
      * 
-     * @return author
+     * @return additionalInfo
      */
-    public java.lang.String getAuthor() {
-        return author;
+    public java.util.HashMap getAdditionalInfo() {
+        return additionalInfo;
     }
 
 
     /**
-     * Sets the author value for this SimpleModule.
+     * Sets the additionalInfo value for this SimpleModule.
      * 
-     * @param author
+     * @param additionalInfo
      */
-    public void setAuthor(java.lang.String author) {
-        this.author = author;
-    }
-
-
-    /**
-     * Gets the description value for this SimpleModule.
-     * 
-     * @return description
-     */
-    public java.lang.String getDescription() {
-        return description;
-    }
-
-
-    /**
-     * Sets the description value for this SimpleModule.
-     * 
-     * @param description
-     */
-    public void setDescription(java.lang.String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * Gets the help value for this SimpleModule.
-     * 
-     * @return help
-     */
-    public java.lang.String getHelp() {
-        return help;
-    }
-
-
-    /**
-     * Sets the help value for this SimpleModule.
-     * 
-     * @param help
-     */
-    public void setHelp(java.lang.String help) {
-        this.help = help;
-    }
-
-
-    /**
-     * Gets the licenseAgreement value for this SimpleModule.
-     * 
-     * @return licenseAgreement
-     */
-    public java.lang.String getLicenseAgreement() {
-        return licenseAgreement;
-    }
-
-
-    /**
-     * Sets the licenseAgreement value for this SimpleModule.
-     * 
-     * @param licenseAgreement
-     */
-    public void setLicenseAgreement(java.lang.String licenseAgreement) {
-        this.licenseAgreement = licenseAgreement;
-    }
-
-
-    /**
-     * Gets the licenseType value for this SimpleModule.
-     * 
-     * @return licenseType
-     */
-    public java.lang.String getLicenseType() {
-        return licenseType;
-    }
-
-
-    /**
-     * Sets the licenseType value for this SimpleModule.
-     * 
-     * @param licenseType
-     */
-    public void setLicenseType(java.lang.String licenseType) {
-        this.licenseType = licenseType;
-    }
-
-
-    /**
-     * Gets the moduleID value for this SimpleModule.
-     * 
-     * @return moduleID
-     */
-    public java.lang.String getModuleID() {
-        return moduleID;
-    }
-
-
-    /**
-     * Sets the moduleID value for this SimpleModule.
-     * 
-     * @param moduleID
-     */
-    public void setModuleID(java.lang.String moduleID) {
-        this.moduleID = moduleID;
-    }
-
-
-    /**
-     * Gets the moduleVersionID value for this SimpleModule.
-     * 
-     * @return moduleVersionID
-     */
-    public java.lang.String getModuleVersionID() {
-        return moduleVersionID;
-    }
-
-
-    /**
-     * Sets the moduleVersionID value for this SimpleModule.
-     * 
-     * @param moduleVersionID
-     */
-    public void setModuleVersionID(java.lang.String moduleVersionID) {
-        this.moduleVersionID = moduleVersionID;
-    }
-
-
-    /**
-     * Gets the name value for this SimpleModule.
-     * 
-     * @return name
-     */
-    public java.lang.String getName() {
-        return name;
-    }
-
-
-    /**
-     * Sets the name value for this SimpleModule.
-     * 
-     * @param name
-     */
-    public void setName(java.lang.String name) {
-        this.name = name;
-    }
-
-
-    /**
-     * Gets the type value for this SimpleModule.
-     * 
-     * @return type
-     */
-    public java.lang.String getType() {
-        return type;
-    }
-
-
-    /**
-     * Sets the type value for this SimpleModule.
-     * 
-     * @param type
-     */
-    public void setType(java.lang.String type) {
-        this.type = type;
-    }
-
-
-    /**
-     * Gets the updateDescription value for this SimpleModule.
-     * 
-     * @return updateDescription
-     */
-    public java.lang.String getUpdateDescription() {
-        return updateDescription;
-    }
-
-
-    /**
-     * Sets the updateDescription value for this SimpleModule.
-     * 
-     * @param updateDescription
-     */
-    public void setUpdateDescription(java.lang.String updateDescription) {
-        this.updateDescription = updateDescription;
-    }
-
-
-    /**
-     * Gets the url value for this SimpleModule.
-     * 
-     * @return url
-     */
-    public java.lang.String getUrl() {
-        return url;
-    }
-
-
-    /**
-     * Sets the url value for this SimpleModule.
-     * 
-     * @param url
-     */
-    public void setUrl(java.lang.String url) {
-        this.url = url;
-    }
-
-
-    /**
-     * Gets the versionNo value for this SimpleModule.
-     * 
-     * @return versionNo
-     */
-    public java.lang.String getVersionNo() {
-        return versionNo;
-    }
-
-
-    /**
-     * Sets the versionNo value for this SimpleModule.
-     * 
-     * @param versionNo
-     */
-    public void setVersionNo(java.lang.String versionNo) {
-        this.versionNo = versionNo;
-    }
-
-
-    /**
-     * Gets the isCommercial value for this SimpleModule.
-     * 
-     * @return isCommercial
-     */
-    public java.lang.Boolean getIsCommercial() {
-        return isCommercial;
-    }
-
-
-    /**
-     * Sets the isCommercial value for this SimpleModule.
-     * 
-     * @param isCommercial
-     */
-    public void setIsCommercial(java.lang.Boolean isCommercial) {
-        this.isCommercial = isCommercial;
+    public void setAdditionalInfo(java.util.HashMap additionalInfo) {
+        this.additionalInfo = additionalInfo;
     }
 
     private java.lang.Object __equalsCalc = null;
@@ -337,46 +76,10 @@
         }
         __equalsCalc = obj;
         boolean _equals;
-        _equals = true && 
-            ((this.author==null && other.getAuthor()==null) || 
-             (this.author!=null &&
-              this.author.equals(other.getAuthor()))) &&
-            ((this.description==null && other.getDescription()==null) || 
-             (this.description!=null &&
-              this.description.equals(other.getDescription()))) &&
-            ((this.help==null && other.getHelp()==null) || 
-             (this.help!=null &&
-              this.help.equals(other.getHelp()))) &&
-            ((this.licenseAgreement==null && other.getLicenseAgreement()==null) || 
-             (this.licenseAgreement!=null &&
-              this.licenseAgreement.equals(other.getLicenseAgreement()))) &&
-            ((this.licenseType==null && other.getLicenseType()==null) || 
-             (this.licenseType!=null &&
-              this.licenseType.equals(other.getLicenseType()))) &&
-            ((this.moduleID==null && other.getModuleID()==null) || 
-             (this.moduleID!=null &&
-              this.moduleID.equals(other.getModuleID()))) &&
-            ((this.moduleVersionID==null && other.getModuleVersionID()==null) || 
-             (this.moduleVersionID!=null &&
-              this.moduleVersionID.equals(other.getModuleVersionID()))) &&
-            ((this.name==null && other.getName()==null) || 
-             (this.name!=null &&
-              this.name.equals(other.getName()))) &&
-            ((this.type==null && other.getType()==null) || 
-             (this.type!=null &&
-              this.type.equals(other.getType()))) &&
-            ((this.updateDescription==null && other.getUpdateDescription()==null) || 
-             (this.updateDescription!=null &&
-              this.updateDescription.equals(other.getUpdateDescription()))) &&
-            ((this.url==null && other.getUrl()==null) || 
-             (this.url!=null &&
-              this.url.equals(other.getUrl()))) &&
-            ((this.versionNo==null && other.getVersionNo()==null) || 
-             (this.versionNo!=null &&
-              this.versionNo.equals(other.getVersionNo()))) &&
-            ((this.isCommercial==null && other.getIsCommercial()==null) || 
-             (this.isCommercial!=null &&
-              this.isCommercial.equals(other.getIsCommercial())));
+        _equals = super.equals(obj) && 
+            ((this.additionalInfo==null && other.getAdditionalInfo()==null) || 
+             (this.additionalInfo!=null &&
+              this.additionalInfo.equals(other.getAdditionalInfo())));
         __equalsCalc = null;
         return _equals;
     }
@@ -387,45 +90,9 @@
             return 0;
         }
         __hashCodeCalc = true;
-        int _hashCode = 1;
-        if (getAuthor() != null) {
-            _hashCode += getAuthor().hashCode();
-        }
-        if (getDescription() != null) {
-            _hashCode += getDescription().hashCode();
-        }
-        if (getHelp() != null) {
-            _hashCode += getHelp().hashCode();
-        }
-        if (getLicenseAgreement() != null) {
-            _hashCode += getLicenseAgreement().hashCode();
-        }
-        if (getLicenseType() != null) {
-            _hashCode += getLicenseType().hashCode();
-        }
-        if (getModuleID() != null) {
-            _hashCode += getModuleID().hashCode();
-        }
-        if (getModuleVersionID() != null) {
-            _hashCode += getModuleVersionID().hashCode();
-        }
-        if (getName() != null) {
-            _hashCode += getName().hashCode();
-        }
-        if (getType() != null) {
-            _hashCode += getType().hashCode();
-        }
-        if (getUpdateDescription() != null) {
-            _hashCode += getUpdateDescription().hashCode();
-        }
-        if (getUrl() != null) {
-            _hashCode += getUrl().hashCode();
-        }
-        if (getVersionNo() != null) {
-            _hashCode += getVersionNo().hashCode();
-        }
-        if (getIsCommercial() != null) {
-            _hashCode += getIsCommercial().hashCode();
+        int _hashCode = super.hashCode();
+        if (getAdditionalInfo() != null) {
+            _hashCode += getAdditionalInfo().hashCode();
         }
         __hashCodeCalc = false;
         return _hashCode;
@@ -436,83 +103,11 @@
         new org.apache.axis.description.TypeDesc(SimpleModule.class, true);
 
     static {
-        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService2", "SimpleModule"));
+        typeDesc.setXmlType(new javax.xml.namespace.QName("/services/WebService3", "SimpleModule"));
         org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("author");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "author"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("description");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "description"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("help");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "help"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("licenseAgreement");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseAgreement"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("licenseType");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseType"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("moduleID");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleID"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("moduleVersionID");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleVersionID"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("name");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "name"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("type");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "type"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("updateDescription");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "updateDescription"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("url");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("versionNo");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "versionNo"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
-        elemField.setNillable(true);
-        typeDesc.addFieldDesc(elemField);
-        elemField = new org.apache.axis.description.ElementDesc();
-        elemField.setFieldName("isCommercial");
-        elemField.setXmlName(new javax.xml.namespace.QName("", "isCommercial"));
-        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+        elemField.setFieldName("additionalInfo");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "additionalInfo"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://xml.apache.org/xml-soap", "Map"));
         elemField.setNillable(true);
         typeDesc.addFieldDesc(elemField);
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/SimpleModule1.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,515 @@
+/**
+ * SimpleModule1.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class SimpleModule1  implements java.io.Serializable {
+    private java.lang.String author;
+
+    private java.lang.String description;
+
+    private java.lang.String help;
+
+    private java.lang.String licenseAgreement;
+
+    private java.lang.String licenseType;
+
+    private java.lang.String moduleID;
+
+    private java.lang.String moduleVersionID;
+
+    private java.lang.String name;
+
+    private java.lang.String type;
+
+    private java.lang.String updateDescription;
+
+    private java.lang.String url;
+
+    private java.lang.String versionNo;
+
+    public SimpleModule1() {
+    }
+
+    public SimpleModule1(
+           java.lang.String author,
+           java.lang.String description,
+           java.lang.String help,
+           java.lang.String licenseAgreement,
+           java.lang.String licenseType,
+           java.lang.String moduleID,
+           java.lang.String moduleVersionID,
+           java.lang.String name,
+           java.lang.String type,
+           java.lang.String updateDescription,
+           java.lang.String url,
+           java.lang.String versionNo) {
+           this.author = author;
+           this.description = description;
+           this.help = help;
+           this.licenseAgreement = licenseAgreement;
+           this.licenseType = licenseType;
+           this.moduleID = moduleID;
+           this.moduleVersionID = moduleVersionID;
+           this.name = name;
+           this.type = type;
+           this.updateDescription = updateDescription;
+           this.url = url;
+           this.versionNo = versionNo;
+    }
+
+
+    /**
+     * Gets the author value for this SimpleModule1.
+     * 
+     * @return author
+     */
+    public java.lang.String getAuthor() {
+        return author;
+    }
+
+
+    /**
+     * Sets the author value for this SimpleModule1.
+     * 
+     * @param author
+     */
+    public void setAuthor(java.lang.String author) {
+        this.author = author;
+    }
+
+
+    /**
+     * Gets the description value for this SimpleModule1.
+     * 
+     * @return description
+     */
+    public java.lang.String getDescription() {
+        return description;
+    }
+
+
+    /**
+     * Sets the description value for this SimpleModule1.
+     * 
+     * @param description
+     */
+    public void setDescription(java.lang.String description) {
+        this.description = description;
+    }
+
+
+    /**
+     * Gets the help value for this SimpleModule1.
+     * 
+     * @return help
+     */
+    public java.lang.String getHelp() {
+        return help;
+    }
+
+
+    /**
+     * Sets the help value for this SimpleModule1.
+     * 
+     * @param help
+     */
+    public void setHelp(java.lang.String help) {
+        this.help = help;
+    }
+
+
+    /**
+     * Gets the licenseAgreement value for this SimpleModule1.
+     * 
+     * @return licenseAgreement
+     */
+    public java.lang.String getLicenseAgreement() {
+        return licenseAgreement;
+    }
+
+
+    /**
+     * Sets the licenseAgreement value for this SimpleModule1.
+     * 
+     * @param licenseAgreement
+     */
+    public void setLicenseAgreement(java.lang.String licenseAgreement) {
+        this.licenseAgreement = licenseAgreement;
+    }
+
+
+    /**
+     * Gets the licenseType value for this SimpleModule1.
+     * 
+     * @return licenseType
+     */
+    public java.lang.String getLicenseType() {
+        return licenseType;
+    }
+
+
+    /**
+     * Sets the licenseType value for this SimpleModule1.
+     * 
+     * @param licenseType
+     */
+    public void setLicenseType(java.lang.String licenseType) {
+        this.licenseType = licenseType;
+    }
+
+
+    /**
+     * Gets the moduleID value for this SimpleModule1.
+     * 
+     * @return moduleID
+     */
+    public java.lang.String getModuleID() {
+        return moduleID;
+    }
+
+
+    /**
+     * Sets the moduleID value for this SimpleModule1.
+     * 
+     * @param moduleID
+     */
+    public void setModuleID(java.lang.String moduleID) {
+        this.moduleID = moduleID;
+    }
+
+
+    /**
+     * Gets the moduleVersionID value for this SimpleModule1.
+     * 
+     * @return moduleVersionID
+     */
+    public java.lang.String getModuleVersionID() {
+        return moduleVersionID;
+    }
+
+
+    /**
+     * Sets the moduleVersionID value for this SimpleModule1.
+     * 
+     * @param moduleVersionID
+     */
+    public void setModuleVersionID(java.lang.String moduleVersionID) {
+        this.moduleVersionID = moduleVersionID;
+    }
+
+
+    /**
+     * Gets the name value for this SimpleModule1.
+     * 
+     * @return name
+     */
+    public java.lang.String getName() {
+        return name;
+    }
+
+
+    /**
+     * Sets the name value for this SimpleModule1.
+     * 
+     * @param name
+     */
+    public void setName(java.lang.String name) {
+        this.name = name;
+    }
+
+
+    /**
+     * Gets the type value for this SimpleModule1.
+     * 
+     * @return type
+     */
+    public java.lang.String getType() {
+        return type;
+    }
+
+
+    /**
+     * Sets the type value for this SimpleModule1.
+     * 
+     * @param type
+     */
+    public void setType(java.lang.String type) {
+        this.type = type;
+    }
+
+
+    /**
+     * Gets the updateDescription value for this SimpleModule1.
+     * 
+     * @return updateDescription
+     */
+    public java.lang.String getUpdateDescription() {
+        return updateDescription;
+    }
+
+
+    /**
+     * Sets the updateDescription value for this SimpleModule1.
+     * 
+     * @param updateDescription
+     */
+    public void setUpdateDescription(java.lang.String updateDescription) {
+        this.updateDescription = updateDescription;
+    }
+
+
+    /**
+     * Gets the url value for this SimpleModule1.
+     * 
+     * @return url
+     */
+    public java.lang.String getUrl() {
+        return url;
+    }
+
+
+    /**
+     * Sets the url value for this SimpleModule1.
+     * 
+     * @param url
+     */
+    public void setUrl(java.lang.String url) {
+        this.url = url;
+    }
+
+
+    /**
+     * Gets the versionNo value for this SimpleModule1.
+     * 
+     * @return versionNo
+     */
+    public java.lang.String getVersionNo() {
+        return versionNo;
+    }
+
+
+    /**
+     * Sets the versionNo value for this SimpleModule1.
+     * 
+     * @param versionNo
+     */
+    public void setVersionNo(java.lang.String versionNo) {
+        this.versionNo = versionNo;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof SimpleModule1)) return false;
+        SimpleModule1 other = (SimpleModule1) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = true && 
+            ((this.author==null && other.getAuthor()==null) || 
+             (this.author!=null &&
+              this.author.equals(other.getAuthor()))) &&
+            ((this.description==null && other.getDescription()==null) || 
+             (this.description!=null &&
+              this.description.equals(other.getDescription()))) &&
+            ((this.help==null && other.getHelp()==null) || 
+             (this.help!=null &&
+              this.help.equals(other.getHelp()))) &&
+            ((this.licenseAgreement==null && other.getLicenseAgreement()==null) || 
+             (this.licenseAgreement!=null &&
+              this.licenseAgreement.equals(other.getLicenseAgreement()))) &&
+            ((this.licenseType==null && other.getLicenseType()==null) || 
+             (this.licenseType!=null &&
+              this.licenseType.equals(other.getLicenseType()))) &&
+            ((this.moduleID==null && other.getModuleID()==null) || 
+             (this.moduleID!=null &&
+              this.moduleID.equals(other.getModuleID()))) &&
+            ((this.moduleVersionID==null && other.getModuleVersionID()==null) || 
+             (this.moduleVersionID!=null &&
+              this.moduleVersionID.equals(other.getModuleVersionID()))) &&
+            ((this.name==null && other.getName()==null) || 
+             (this.name!=null &&
+              this.name.equals(other.getName()))) &&
+            ((this.type==null && other.getType()==null) || 
+             (this.type!=null &&
+              this.type.equals(other.getType()))) &&
+            ((this.updateDescription==null && other.getUpdateDescription()==null) || 
+             (this.updateDescription!=null &&
+              this.updateDescription.equals(other.getUpdateDescription()))) &&
+            ((this.url==null && other.getUrl()==null) || 
+             (this.url!=null &&
+              this.url.equals(other.getUrl()))) &&
+            ((this.versionNo==null && other.getVersionNo()==null) || 
+             (this.versionNo!=null &&
+              this.versionNo.equals(other.getVersionNo())));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = 1;
+        if (getAuthor() != null) {
+            _hashCode += getAuthor().hashCode();
+        }
+        if (getDescription() != null) {
+            _hashCode += getDescription().hashCode();
+        }
+        if (getHelp() != null) {
+            _hashCode += getHelp().hashCode();
+        }
+        if (getLicenseAgreement() != null) {
+            _hashCode += getLicenseAgreement().hashCode();
+        }
+        if (getLicenseType() != null) {
+            _hashCode += getLicenseType().hashCode();
+        }
+        if (getModuleID() != null) {
+            _hashCode += getModuleID().hashCode();
+        }
+        if (getModuleVersionID() != null) {
+            _hashCode += getModuleVersionID().hashCode();
+        }
+        if (getName() != null) {
+            _hashCode += getName().hashCode();
+        }
+        if (getType() != null) {
+            _hashCode += getType().hashCode();
+        }
+        if (getUpdateDescription() != null) {
+            _hashCode += getUpdateDescription().hashCode();
+        }
+        if (getUrl() != null) {
+            _hashCode += getUrl().hashCode();
+        }
+        if (getVersionNo() != null) {
+            _hashCode += getVersionNo().hashCode();
+        }
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(SimpleModule1.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "SimpleModule1"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("author");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "author"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("description");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "description"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("help");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "help"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("licenseAgreement");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseAgreement"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("licenseType");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "licenseType"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("moduleID");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleID"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("moduleVersionID");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "moduleVersionID"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("name");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "name"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("type");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "type"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("updateDescription");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "updateDescription"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("url");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("versionNo");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "versionNo"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/SimpleModule2.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,140 @@
+/**
+ * SimpleModule2.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class SimpleModule2  extends org.openbravo.services.webservice.SimpleModule1  implements java.io.Serializable {
+    private boolean isCommercial;
+
+    public SimpleModule2() {
+    }
+
+    public SimpleModule2(
+           java.lang.String author,
+           java.lang.String description,
+           java.lang.String help,
+           java.lang.String licenseAgreement,
+           java.lang.String licenseType,
+           java.lang.String moduleID,
+           java.lang.String moduleVersionID,
+           java.lang.String name,
+           java.lang.String type,
+           java.lang.String updateDescription,
+           java.lang.String url,
+           java.lang.String versionNo,
+           boolean isCommercial) {
+        super(
+            author,
+            description,
+            help,
+            licenseAgreement,
+            licenseType,
+            moduleID,
+            moduleVersionID,
+            name,
+            type,
+            updateDescription,
+            url,
+            versionNo);
+        this.isCommercial = isCommercial;
+    }
+
+
+    /**
+     * Gets the isCommercial value for this SimpleModule2.
+     * 
+     * @return isCommercial
+     */
+    public boolean isIsCommercial() {
+        return isCommercial;
+    }
+
+
+    /**
+     * Sets the isCommercial value for this SimpleModule2.
+     * 
+     * @param isCommercial
+     */
+    public void setIsCommercial(boolean isCommercial) {
+        this.isCommercial = isCommercial;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof SimpleModule2)) return false;
+        SimpleModule2 other = (SimpleModule2) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj) && 
+            this.isCommercial == other.isIsCommercial();
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        _hashCode += (isIsCommercial() ? Boolean.TRUE : Boolean.FALSE).hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(SimpleModule2.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "SimpleModule2"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("isCommercial");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "isCommercial"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/WebService3Impl.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,20 @@
+/**
+ * WebService3Impl.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public interface WebService3Impl extends java.rmi.Remote {
+    public byte[] getModule(java.lang.String moduleVersionID) throws java.rmi.RemoteException;
+    public boolean isCommercial(java.lang.String moduleVersionID) throws java.rmi.RemoteException;
+    public org.openbravo.services.webservice.Module moduleDetail(java.lang.String moduleVersionID) throws java.rmi.RemoteException;
+    public org.openbravo.services.webservice.SimpleModule[] moduleSearch(java.lang.String word, java.lang.String[] exclude) throws java.rmi.RemoteException;
+    public org.openbravo.services.webservice.Module moduleRegister(org.openbravo.services.webservice.Module module, java.lang.String userName, java.lang.String password) throws java.rmi.RemoteException;
+    public org.openbravo.services.webservice.SimpleModule[] moduleScanForUpdates(java.util.HashMap moduleIdInstalledModules) throws java.rmi.RemoteException;
+    public org.openbravo.services.webservice.ModuleInstallDetail checkConsistency(java.util.HashMap versionIdInstalled, java.lang.String[] versionIdToInstall, java.lang.String[] versionIdToUpdate) throws java.rmi.RemoteException;
+    public java.lang.String getURLforDownload(java.lang.String moduleVersionID) throws java.rmi.RemoteException;
+    public java.lang.String[][] getMaturityLevels() throws java.rmi.RemoteException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/WebService3ImplService.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,16 @@
+/**
+ * WebService3ImplService.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public interface WebService3ImplService extends javax.xml.rpc.Service {
+    public java.lang.String getWebService3Address();
+
+    public org.openbravo.services.webservice.WebService3Impl getWebService3() throws javax.xml.rpc.ServiceException;
+
+    public org.openbravo.services.webservice.WebService3Impl getWebService3(java.net.URL portAddress) throws javax.xml.rpc.ServiceException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/WebService3ImplServiceLocator.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,142 @@
+/**
+ * WebService3ImplServiceLocator.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class WebService3ImplServiceLocator extends org.apache.axis.client.Service implements org.openbravo.services.webservice.WebService3ImplService {
+
+    public WebService3ImplServiceLocator() {
+    }
+
+
+    public WebService3ImplServiceLocator(org.apache.axis.EngineConfiguration config) {
+        super(config);
+    }
+
+    public WebService3ImplServiceLocator(java.lang.String wsdlLoc, javax.xml.namespace.QName sName) throws javax.xml.rpc.ServiceException {
+        super(wsdlLoc, sName);
+    }
+
+    // Use to get a proxy class for WebService3
+    private java.lang.String WebService3_address = "http://centralrepository.openbravo.com/openbravo/services/WebService3";
+
+    public java.lang.String getWebService3Address() {
+        return WebService3_address;
+    }
+
+    // The WSDD service name defaults to the port name.
+    private java.lang.String WebService3WSDDServiceName = "WebService3";
+
+    public java.lang.String getWebService3WSDDServiceName() {
+        return WebService3WSDDServiceName;
+    }
+
+    public void setWebService3WSDDServiceName(java.lang.String name) {
+        WebService3WSDDServiceName = name;
+    }
+
+    public org.openbravo.services.webservice.WebService3Impl getWebService3() throws javax.xml.rpc.ServiceException {
+       java.net.URL endpoint;
+        try {
+            endpoint = new java.net.URL(WebService3_address);
+        }
+        catch (java.net.MalformedURLException e) {
+            throw new javax.xml.rpc.ServiceException(e);
+        }
+        return getWebService3(endpoint);
+    }
+
+    public org.openbravo.services.webservice.WebService3Impl getWebService3(java.net.URL portAddress) throws javax.xml.rpc.ServiceException {
+        try {
+            org.openbravo.services.webservice.WebService3SoapBindingStub _stub = new org.openbravo.services.webservice.WebService3SoapBindingStub(portAddress, this);
+            _stub.setPortName(getWebService3WSDDServiceName());
+            return _stub;
+        }
+        catch (org.apache.axis.AxisFault e) {
+            return null;
+        }
+    }
+
+    public void setWebService3EndpointAddress(java.lang.String address) {
+        WebService3_address = address;
+    }
+
+    /**
+     * For the given interface, get the stub implementation.
+     * If this service has no port for the given interface,
+     * then ServiceException is thrown.
+     */
+    public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
+        try {
+            if (org.openbravo.services.webservice.WebService3Impl.class.isAssignableFrom(serviceEndpointInterface)) {
+                org.openbravo.services.webservice.WebService3SoapBindingStub _stub = new org.openbravo.services.webservice.WebService3SoapBindingStub(new java.net.URL(WebService3_address), this);
+                _stub.setPortName(getWebService3WSDDServiceName());
+                return _stub;
+            }
+        }
+        catch (java.lang.Throwable t) {
+            throw new javax.xml.rpc.ServiceException(t);
+        }
+        throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface:  " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));
+    }
+
+    /**
+     * For the given interface, get the stub implementation.
+     * If this service has no port for the given interface,
+     * then ServiceException is thrown.
+     */
+    public java.rmi.Remote getPort(javax.xml.namespace.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
+        if (portName == null) {
+            return getPort(serviceEndpointInterface);
+        }
+        java.lang.String inputPortName = portName.getLocalPart();
+        if ("WebService3".equals(inputPortName)) {
+            return getWebService3();
+        }
+        else  {
+            java.rmi.Remote _stub = getPort(serviceEndpointInterface);
+            ((org.apache.axis.client.Stub) _stub).setPortName(portName);
+            return _stub;
+        }
+    }
+
+    public javax.xml.namespace.QName getServiceName() {
+        return new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "WebService3ImplService");
+    }
+
+    private java.util.HashSet ports = null;
+
+    public java.util.Iterator getPorts() {
+        if (ports == null) {
+            ports = new java.util.HashSet();
+            ports.add(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "WebService3"));
+        }
+        return ports.iterator();
+    }
+
+    /**
+    * Set the endpoint address for the specified port name.
+    */
+    public void setEndpointAddress(java.lang.String portName, java.lang.String address) throws javax.xml.rpc.ServiceException {
+        
+if ("WebService3".equals(portName)) {
+            setWebService3EndpointAddress(address);
+        }
+        else 
+{ // Unknown Port Name
+            throw new javax.xml.rpc.ServiceException(" Cannot set Endpoint Address for Unknown Port" + portName);
+        }
+    }
+
+    /**
+    * Set the endpoint address for the specified port name.
+    */
+    public void setEndpointAddress(javax.xml.namespace.QName portName, java.lang.String address) throws javax.xml.rpc.ServiceException {
+        setEndpointAddress(portName.getLocalPart(), address);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/WebService3SoapBindingImpl.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,47 @@
+/**
+ * WebService3SoapBindingImpl.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class WebService3SoapBindingImpl implements org.openbravo.services.webservice.WebService3Impl{
+    public byte[] getModule(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public boolean isCommercial(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        return false;
+    }
+
+    public org.openbravo.services.webservice.Module moduleDetail(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public org.openbravo.services.webservice.SimpleModule[] moduleSearch(java.lang.String word, java.lang.String[] exclude) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public org.openbravo.services.webservice.Module moduleRegister(org.openbravo.services.webservice.Module module, java.lang.String userName, java.lang.String password) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public org.openbravo.services.webservice.SimpleModule[] moduleScanForUpdates(java.util.HashMap moduleIdInstalledModules) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public org.openbravo.services.webservice.ModuleInstallDetail checkConsistency(java.util.HashMap versionIdInstalled, java.lang.String[] versionIdToInstall, java.lang.String[] versionIdToUpdate) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public java.lang.String getURLforDownload(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        return null;
+    }
+
+    public java.lang.String[][] getMaturityLevels() throws java.rmi.RemoteException {
+        return null;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/services/webservice/WebService3SoapBindingStub.java	Tue Jun 29 18:28:40 2010 +0200
@@ -0,0 +1,611 @@
+/**
+ * WebService3SoapBindingStub.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package org.openbravo.services.webservice;
+
+public class WebService3SoapBindingStub extends org.apache.axis.client.Stub implements org.openbravo.services.webservice.WebService3Impl {
+    private java.util.Vector cachedSerClasses = new java.util.Vector();
+    private java.util.Vector cachedSerQNames = new java.util.Vector();
+    private java.util.Vector cachedSerFactories = new java.util.Vector();
+    private java.util.Vector cachedDeserFactories = new java.util.Vector();
+
+    static org.apache.axis.description.OperationDesc [] _operations;
+
+    static {
+        _operations = new org.apache.axis.description.OperationDesc[9];
+        _initOperationDesc1();
+    }
+
+    private static void _initOperationDesc1(){
+        org.apache.axis.description.OperationDesc oper;
+        org.apache.axis.description.ParameterDesc param;
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("getModule");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "moduleVersionID"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "base64Binary"));
+        oper.setReturnClass(byte[].class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "getModuleReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[0] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("isCommercial");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "moduleVersionID"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+        oper.setReturnClass(boolean.class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "isCommercialReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[1] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("moduleDetail");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "moduleVersionID"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("/services/WebService3", "Module"));
+        oper.setReturnClass(org.openbravo.services.webservice.Module.class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "moduleDetailReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[2] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("moduleSearch");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "word"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "exclude"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_xsd_string"), java.lang.String[].class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_tns1_SimpleModule"));
+        oper.setReturnClass(org.openbravo.services.webservice.SimpleModule[].class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "moduleSearchReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[3] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("moduleRegister");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "module"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("/services/WebService3", "Module"), org.openbravo.services.webservice.Module.class, false, false);
+        oper.addParameter(param);
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "userName"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "password"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("/services/WebService3", "Module"));
+        oper.setReturnClass(org.openbravo.services.webservice.Module.class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "moduleRegisterReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[4] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("moduleScanForUpdates");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "moduleIdInstalledModules"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://xml.apache.org/xml-soap", "Map"), java.util.HashMap.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_tns1_SimpleModule"));
+        oper.setReturnClass(org.openbravo.services.webservice.SimpleModule[].class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "moduleScanForUpdatesReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[5] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("checkConsistency");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "versionIdInstalled"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://xml.apache.org/xml-soap", "Map"), java.util.HashMap.class, false, false);
+        oper.addParameter(param);
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "versionIdToInstall"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_xsd_string"), java.lang.String[].class, false, false);
+        oper.addParameter(param);
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "versionIdToUpdate"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_xsd_string"), java.lang.String[].class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("/services/WebService3", "ModuleInstallDetail"));
+        oper.setReturnClass(org.openbravo.services.webservice.ModuleInstallDetail.class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "checkConsistencyReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[6] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("getURLforDownload");
+        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "moduleVersionID"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
+        oper.addParameter(param);
+        oper.setReturnType(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"));
+        oper.setReturnClass(java.lang.String.class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "getURLforDownloadReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[7] = oper;
+
+        oper = new org.apache.axis.description.OperationDesc();
+        oper.setName("getMaturityLevels");
+        oper.setReturnType(new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOfArrayOf_xsd_string"));
+        oper.setReturnClass(java.lang.String[][].class);
+        oper.setReturnQName(new javax.xml.namespace.QName("", "getMaturityLevelsReturn"));
+        oper.setStyle(org.apache.axis.constants.Style.RPC);
+        oper.setUse(org.apache.axis.constants.Use.ENCODED);
+        _operations[8] = oper;
+
+    }
+
+    public WebService3SoapBindingStub() throws org.apache.axis.AxisFault {
+         this(null);
+    }
+
+    public WebService3SoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
+         this(service);
+         super.cachedEndpoint = endpointURL;
+    }
+
+    public WebService3SoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
+        if (service == null) {
+            super.service = new org.apache.axis.client.Service();
+        } else {
+            super.service = service;
+        }
+        ((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");
+            java.lang.Class cls;
+            javax.xml.namespace.QName qName;
+            javax.xml.namespace.QName qName2;
+            java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
+            java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
+            java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
+            java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
+            java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
+            java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
+            java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
+            java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
+            java.lang.Class simplelistsf = org.apache.axis.encoding.ser.SimpleListSerializerFactory.class;
+            java.lang.Class simplelistdf = org.apache.axis.encoding.ser.SimpleListDeserializerFactory.class;
+            qName = new javax.xml.namespace.QName("/services/WebService3", "Module");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.Module.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("/services/WebService3", "ModuleDependency");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.ModuleDependency.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("/services/WebService3", "ModuleInstallDetail");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.ModuleInstallDetail.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("/services/WebService3", "SimpleModule");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.SimpleModule.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_tns1_Module");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.Module[].class;
+            cachedSerClasses.add(cls);
+            qName = new javax.xml.namespace.QName("/services/WebService3", "Module");
+            qName2 = null;
+            cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));
+            cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_tns1_ModuleDependency");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.ModuleDependency[].class;
+            cachedSerClasses.add(cls);
+            qName = new javax.xml.namespace.QName("/services/WebService3", "ModuleDependency");
+            qName2 = null;
+            cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));
+            cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_tns1_SimpleModule");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.SimpleModule[].class;
+            cachedSerClasses.add(cls);
+            qName = new javax.xml.namespace.QName("/services/WebService3", "SimpleModule");
+            qName2 = null;
+            cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));
+            cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOf_xsd_string");
+            cachedSerQNames.add(qName);
+            cls = java.lang.String[].class;
+            cachedSerClasses.add(cls);
+            qName = new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string");
+            qName2 = null;
+            cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));
+            cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "ArrayOfArrayOf_xsd_string");
+            cachedSerQNames.add(qName);
+            cls = java.lang.String[][].class;
+            cachedSerClasses.add(cls);
+            qName = new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string");
+            qName2 = null;
+            cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));
+            cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "Module1");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.Module1.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "Module2");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.Module2.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "SimpleModule1");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.SimpleModule1.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+            qName = new javax.xml.namespace.QName("http://centralrepository.openbravo.com/openbravo/services/WebService3", "SimpleModule2");
+            cachedSerQNames.add(qName);
+            cls = org.openbravo.services.webservice.SimpleModule2.class;
+            cachedSerClasses.add(cls);
+            cachedSerFactories.add(beansf);
+            cachedDeserFactories.add(beandf);
+
+    }
+
+    protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
+        try {
+            org.apache.axis.client.Call _call = super._createCall();
+            if (super.maintainSessionSet) {
+                _call.setMaintainSession(super.maintainSession);
+            }
+            if (super.cachedUsername != null) {
+                _call.setUsername(super.cachedUsername);
+            }
+            if (super.cachedPassword != null) {
+                _call.setPassword(super.cachedPassword);
+            }
+            if (super.cachedEndpoint != null) {
+                _call.setTargetEndpointAddress(super.cachedEndpoint);
+            }
+            if (super.cachedTimeout != null) {
+                _call.setTimeout(super.cachedTimeout);
+            }
+            if (super.cachedPortName != null) {
+                _call.setPortName(super.cachedPortName);
+            }
+            java.util.Enumeration keys = super.cachedProperties.keys();
+            while (keys.hasMoreElements()) {
+                java.lang.String key = (java.lang.String) keys.nextElement();
+                _call.setProperty(key, super.cachedProperties.get(key));
+            }
+            // All the type mapping information is registered
+            // when the first call is made.
+            // The type mapping information is actually registered in
+            // the TypeMappingRegistry of the service, which
+            // is the reason why registration is only needed for the first call.
+            synchronized (this) {
+                if (firstCall()) {
+                    // must set encoding style before registering serializers
+                    _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+                    _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
+                    for (int i = 0; i < cachedSerFactories.size(); ++i) {
+                        java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
+                        javax.xml.namespace.QName qName =
+                                (javax.xml.namespace.QName) cachedSerQNames.get(i);
+                        java.lang.Object x = cachedSerFactories.get(i);
+                        if (x instanceof Class) {
+                            java.lang.Class sf = (java.lang.Class)
+                                 cachedSerFactories.get(i);
+                            java.lang.Class df = (java.lang.Class)
+                                 cachedDeserFactories.get(i);
+                            _call.registerTypeMapping(cls, qName, sf, df, false);
+                        }
+                        else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
+                            org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory)
+                                 cachedSerFactories.get(i);
+                            org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory)
+                                 cachedDeserFactories.get(i);
+                            _call.registerTypeMapping(cls, qName, sf, df, false);
+                        }
+                    }
+                }
+            }
+            return _call;
+        }
+        catch (java.lang.Throwable _t) {
+            throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);
+        }
+    }
+
+    public byte[] getModule(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[0]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "getModule"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {moduleVersionID});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (byte[]) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (byte[]) org.apache.axis.utils.JavaUtils.convert(_resp, byte[].class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public boolean isCommercial(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[1]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "isCommercial"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {moduleVersionID});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return ((java.lang.Boolean) _resp).booleanValue();
+            } catch (java.lang.Exception _exception) {
+                return ((java.lang.Boolean) org.apache.axis.utils.JavaUtils.convert(_resp, boolean.class)).booleanValue();
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public org.openbravo.services.webservice.Module moduleDetail(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[2]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "moduleDetail"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {moduleVersionID});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (org.openbravo.services.webservice.Module) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (org.openbravo.services.webservice.Module) org.apache.axis.utils.JavaUtils.convert(_resp, org.openbravo.services.webservice.Module.class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public org.openbravo.services.webservice.SimpleModule[] moduleSearch(java.lang.String word, java.lang.String[] exclude) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[3]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "moduleSearch"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {word, exclude});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (org.openbravo.services.webservice.SimpleModule[]) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (org.openbravo.services.webservice.SimpleModule[]) org.apache.axis.utils.JavaUtils.convert(_resp, org.openbravo.services.webservice.SimpleModule[].class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public org.openbravo.services.webservice.Module moduleRegister(org.openbravo.services.webservice.Module module, java.lang.String userName, java.lang.String password) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[4]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "moduleRegister"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {module, userName, password});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (org.openbravo.services.webservice.Module) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (org.openbravo.services.webservice.Module) org.apache.axis.utils.JavaUtils.convert(_resp, org.openbravo.services.webservice.Module.class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public org.openbravo.services.webservice.SimpleModule[] moduleScanForUpdates(java.util.HashMap moduleIdInstalledModules) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[5]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "moduleScanForUpdates"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {moduleIdInstalledModules});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (org.openbravo.services.webservice.SimpleModule[]) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (org.openbravo.services.webservice.SimpleModule[]) org.apache.axis.utils.JavaUtils.convert(_resp, org.openbravo.services.webservice.SimpleModule[].class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public org.openbravo.services.webservice.ModuleInstallDetail checkConsistency(java.util.HashMap versionIdInstalled, java.lang.String[] versionIdToInstall, java.lang.String[] versionIdToUpdate) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[6]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "checkConsistency"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {versionIdInstalled, versionIdToInstall, versionIdToUpdate});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (org.openbravo.services.webservice.ModuleInstallDetail) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (org.openbravo.services.webservice.ModuleInstallDetail) org.apache.axis.utils.JavaUtils.convert(_resp, org.openbravo.services.webservice.ModuleInstallDetail.class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public java.lang.String getURLforDownload(java.lang.String moduleVersionID) throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[7]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "getURLforDownload"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {moduleVersionID});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (java.lang.String) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (java.lang.String) org.apache.axis.utils.JavaUtils.convert(_resp, java.lang.String.class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+    public java.lang.String[][] getMaturityLevels() throws java.rmi.RemoteException {
+        if (super.cachedEndpoint == null) {
+            throw new org.apache.axis.NoEndPointException();
+        }
+        org.apache.axis.client.Call _call = createCall();
+        _call.setOperation(_operations[8]);
+        _call.setUseSOAPAction(true);
+        _call.setSOAPActionURI("");
+        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+        _call.setOperationName(new javax.xml.namespace.QName("http://erp.ws.centralrepository.utility.openbravo.org", "getMaturityLevels"));
+
+        setRequestHeaders(_call);
+        setAttachments(_call);
+ try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {});
+
+        if (_resp instanceof java.rmi.RemoteException) {
+            throw (java.rmi.RemoteException)_resp;
+        }
+        else {
+            extractAttachments(_call);
+            try {
+                return (java.lang.String[][]) _resp;
+            } catch (java.lang.Exception _exception) {
+                return (java.lang.String[][]) org.apache.axis.utils.JavaUtils.convert(_resp, java.lang.String[][].class);
+            }
+        }
+  } catch (org.apache.axis.AxisFault axisFaultException) {
+  throw axisFaultException;
+}
+    }
+
+}
--- a/src/org/openbravo/services/webservice/deploy.wsdd	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/deploy.wsdd	Tue Jun 29 18:28:40 2010 +0200
@@ -10,57 +10,120 @@
     xmlns="http://xml.apache.org/axis/wsdd/"
     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 
-  <!-- Services from WebServiceImplService WSDL service -->
+  <!-- Services from WebService3ImplService WSDL service -->
 
-  <service name="WebService" provider="java:RPC" style="rpc" use="encoded">
-      <parameter name="wsdlTargetNamespace" value="http://centralrepository.openbravo.com/openbravo/services/WebService2"/>
-      <parameter name="wsdlServiceElement" value="WebServiceImplService"/>
-      <parameter name="schemaUnqualified" value="http://xml.apache.org/xml-soap,/services/WebService2,http://centralrepository.openbravo.com/openbravo/services/WebService2"/>
-      <parameter name="wsdlServicePort" value="WebService"/>
-      <parameter name="className" value="org.openbravo.services.webservice.WebServiceSoapBindingImpl"/>
-      <parameter name="wsdlPortType" value="WebServiceImpl"/>
+  <service name="WebService3" provider="java:RPC" style="rpc" use="encoded">
+      <parameter name="wsdlTargetNamespace" value="http://centralrepository.openbravo.com/openbravo/services/WebService3"/>
+      <parameter name="wsdlServiceElement" value="WebService3ImplService"/>
+      <parameter name="schemaUnqualified" value="http://xml.apache.org/xml-soap,/services/WebService3,http://centralrepository.openbravo.com/openbravo/services/WebService3"/>
+      <parameter name="wsdlServicePort" value="WebService3"/>
+      <parameter name="className" value="org.openbravo.services.webservice.WebService3SoapBindingImpl"/>
+      <parameter name="wsdlPortType" value="WebService3Impl"/>
       <parameter name="typeMappingVersion" value="1.2"/>
-      <operation name="getModule" qname="operNS:getModule" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="getModuleReturn" returnType="rtns:base64Binary" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >
-        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+      <operation name="getModule" qname="operNS:getModule" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="getModuleReturn" returnType="rtns:base64Binary" xmlns:rtns="http://schemas.xmlsoap.org/soap/encoding/" soapAction="" >
+        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
       </operation>
-      <operation name="moduleSearch" qname="operNS:moduleSearch" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="moduleSearchReturn" returnType="rtns:ArrayOf_tns1_SimpleModule" xmlns:rtns="http://centralrepository.openbravo.com/openbravo/services/WebService2" returnItemType="tns2:SimpleModule" xmlns:tns2="/services/WebService2" soapAction="" >
-        <parameter qname="word" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
-        <parameter qname="exclude" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService2"/>
+      <operation name="isCommercial" qname="operNS:isCommercial" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="isCommercialReturn" returnType="rtns:boolean" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >
+        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
       </operation>
-      <operation name="moduleDetail" qname="operNS:moduleDetail" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="moduleDetailReturn" returnType="rtns:Module" xmlns:rtns="/services/WebService2" soapAction="" >
-        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+      <operation name="moduleDetail" qname="operNS:moduleDetail" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="moduleDetailReturn" returnType="rtns:Module" xmlns:rtns="/services/WebService3" soapAction="" >
+        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
       </operation>
-      <operation name="getURLforDownload" qname="operNS:getURLforDownload" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="getURLforDownloadReturn" returnType="rtns:string" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >
-        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+      <operation name="moduleSearch" qname="operNS:moduleSearch" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="moduleSearchReturn" returnType="rtns:ArrayOf_tns1_SimpleModule" xmlns:rtns="http://centralrepository.openbravo.com/openbravo/services/WebService3" returnItemType="tns2:SimpleModule" xmlns:tns2="/services/WebService3" soapAction="" >
+        <parameter qname="word" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
+        <parameter qname="exclude" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService3"/>
       </operation>
-      <operation name="isCommercial" qname="operNS:isCommercial" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="isCommercialReturn" returnType="rtns:boolean" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >
-        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+      <operation name="moduleRegister" qname="operNS:moduleRegister" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="moduleRegisterReturn" returnType="rtns:Module" xmlns:rtns="/services/WebService3" soapAction="" >
+        <parameter qname="module" type="tns:Module" xmlns:tns="/services/WebService3"/>
+        <parameter qname="userName" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
+        <parameter qname="password" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
       </operation>
-      <operation name="moduleScanForUpdates" qname="operNS:moduleScanForUpdates" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="moduleScanForUpdatesReturn" returnType="rtns:ArrayOf_tns1_SimpleModule" xmlns:rtns="http://centralrepository.openbravo.com/openbravo/services/WebService2" returnItemType="tns2:SimpleModule" xmlns:tns2="/services/WebService2" soapAction="" >
+      <operation name="moduleScanForUpdates" qname="operNS:moduleScanForUpdates" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="moduleScanForUpdatesReturn" returnType="rtns:ArrayOf_tns1_SimpleModule" xmlns:rtns="http://centralrepository.openbravo.com/openbravo/services/WebService3" returnItemType="tns2:SimpleModule" xmlns:tns2="/services/WebService3" soapAction="" >
         <parameter qname="moduleIdInstalledModules" type="tns:Map" xmlns:tns="http://xml.apache.org/xml-soap"/>
       </operation>
-      <operation name="moduleRegister" qname="operNS:moduleRegister" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="moduleRegisterReturn" returnType="rtns:Module" xmlns:rtns="/services/WebService2" soapAction="" >
-        <parameter qname="module" type="tns:Module" xmlns:tns="/services/WebService2"/>
-        <parameter qname="userName" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
-        <parameter qname="password" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+      <operation name="checkConsistency" qname="operNS:checkConsistency" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="checkConsistencyReturn" returnType="rtns:ModuleInstallDetail" xmlns:rtns="/services/WebService3" soapAction="" >
+        <parameter qname="versionIdInstalled" type="tns:Map" xmlns:tns="http://xml.apache.org/xml-soap"/>
+        <parameter qname="versionIdToInstall" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService3"/>
+        <parameter qname="versionIdToUpdate" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService3"/>
       </operation>
-      <operation name="checkConsistency" qname="operNS:checkConsistency" xmlns:operNS="http://services.ws.erpCommon.openbravo.org" returnQName="checkConsistencyReturn" returnType="rtns:ModuleInstallDetail" xmlns:rtns="/services/WebService2" soapAction="" >
-        <parameter qname="versionIdInstalled" type="tns:Map" xmlns:tns="http://xml.apache.org/xml-soap"/>
-        <parameter qname="versionIdToInstall" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService2"/>
-        <parameter qname="versionIdToUpdate" type="tns:ArrayOf_xsd_string" xmlns:tns="http://centralrepository.openbravo.com/openbravo/services/WebService2"/>
+      <operation name="getURLforDownload" qname="operNS:getURLforDownload" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="getURLforDownloadReturn" returnType="rtns:string" xmlns:rtns="http://schemas.xmlsoap.org/soap/encoding/" soapAction="" >
+        <parameter qname="moduleVersionID" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
       </operation>
-      <parameter name="allowedMethods" value="checkConsistency getModule moduleRegister moduleScanForUpdates isCommercial getURLforDownload moduleDetail moduleSearch"/>
+      <operation name="getMaturityLevels" qname="operNS:getMaturityLevels" xmlns:operNS="http://erp.ws.centralrepository.utility.openbravo.org" returnQName="getMaturityLevelsReturn" returnType="rtns:ArrayOfArrayOf_xsd_string" xmlns:rtns="http://centralrepository.openbravo.com/openbravo/services/WebService3" returnItemType="tns2:string" xmlns:tns2="http://www.w3.org/2001/XMLSchema" soapAction="" >
+      </operation>
+      <parameter name="allowedMethods" value="checkConsistency getMaturityLevels getModule moduleRegister moduleScanForUpdates isCommercial getURLforDownload moduleSearch moduleDetail"/>
 
       <typeMapping
-        xmlns:ns="/services/WebService2"
-        qname="ns:ModuleInstallDetail"
-        type="java:org.openbravo.services.webservice.ModuleInstallDetail"
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:SimpleModule1"
+        type="java:org.openbravo.services.webservice.SimpleModule1"
         serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
         deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       />
       <typeMapping
-        xmlns:ns="/services/WebService2"
+        xmlns:ns="/services/WebService3"
+        qname="ns:ModuleDependency"
+        type="java:org.openbravo.services.webservice.ModuleDependency"
+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <typeMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:Module2"
+        type="java:org.openbravo.services.webservice.Module2"
+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <typeMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:SimpleModule2"
+        type="java:org.openbravo.services.webservice.SimpleModule2"
+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <typeMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:Module1"
+        type="java:org.openbravo.services.webservice.Module1"
+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <arrayMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:ArrayOfArrayOf_xsd_string"
+        type="java:java.lang.String[][]"
+        innerType="cmp-ns:string" xmlns:cmp-ns="http://www.w3.org/2001/XMLSchema"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <typeMapping
+        xmlns:ns="/services/WebService3"
+        qname="ns:Module"
+        type="java:org.openbravo.services.webservice.Module"
+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <arrayMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:ArrayOf_tns1_Module"
+        type="java:org.openbravo.services.webservice.Module[]"
+        innerType="cmp-ns:Module" xmlns:cmp-ns="/services/WebService3"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <arrayMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:ArrayOf_tns1_SimpleModule"
+        type="java:org.openbravo.services.webservice.SimpleModule[]"
+        innerType="cmp-ns:SimpleModule" xmlns:cmp-ns="/services/WebService3"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
+      <typeMapping
+        xmlns:ns="/services/WebService3"
         qname="ns:SimpleModule"
         type="java:org.openbravo.services.webservice.SimpleModule"
         serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
@@ -68,48 +131,26 @@
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       />
       <typeMapping
-        xmlns:ns="/services/WebService2"
-        qname="ns:Module"
-        type="java:org.openbravo.services.webservice.Module"
-        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
-        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
-        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-      />
-      <typeMapping
-        xmlns:ns="/services/WebService2"
-        qname="ns:ModuleDependency"
-        type="java:org.openbravo.services.webservice.ModuleDependency"
+        xmlns:ns="/services/WebService3"
+        qname="ns:ModuleInstallDetail"
+        type="java:org.openbravo.services.webservice.ModuleInstallDetail"
         serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
         deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       />
       <arrayMapping
-        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService2"
-        qname="ns:ArrayOf_tns1_SimpleModule"
-        type="java:org.openbravo.services.webservice.SimpleModule[]"
-        innerType="cmp-ns:SimpleModule" xmlns:cmp-ns="/services/WebService2"
-        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-      />
-      <arrayMapping
-        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService2"
-        qname="ns:ArrayOf_tns1_Module"
-        type="java:org.openbravo.services.webservice.Module[]"
-        innerType="cmp-ns:Module" xmlns:cmp-ns="/services/WebService2"
-        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-      />
-      <arrayMapping
-        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService2"
-        qname="ns:ArrayOf_tns1_ModuleDependency"
-        type="java:org.openbravo.services.webservice.ModuleDependency[]"
-        innerType="cmp-ns:ModuleDependency" xmlns:cmp-ns="/services/WebService2"
-        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-      />
-      <arrayMapping
-        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService2"
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
         qname="ns:ArrayOf_xsd_string"
         type="java:java.lang.String[]"
         innerType="cmp-ns:string" xmlns:cmp-ns="http://www.w3.org/2001/XMLSchema"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       />
+      <arrayMapping
+        xmlns:ns="http://centralrepository.openbravo.com/openbravo/services/WebService3"
+        qname="ns:ArrayOf_tns1_ModuleDependency"
+        type="java:org.openbravo.services.webservice.ModuleDependency[]"
+        innerType="cmp-ns:ModuleDependency" xmlns:cmp-ns="/services/WebService3"
+        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+      />
   </service>
 </deployment>
--- a/src/org/openbravo/services/webservice/undeploy.wsdd	Tue Jun 29 09:21:24 2010 +0200
+++ b/src/org/openbravo/services/webservice/undeploy.wsdd	Tue Jun 29 18:28:40 2010 +0200
@@ -9,7 +9,7 @@
 <undeployment
     xmlns="http://xml.apache.org/axis/wsdd/">
 
-  <!-- Services from WebServiceImplService WSDL service -->
+  <!-- Services from WebService3ImplService WSDL service -->
 
-  <service name="WebService"/>
+  <service name="WebService3"/>
 </undeployment>