You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2006/10/31 05:43:10 UTC

svn commit: r469369 - in /webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment: repository/util/ArchiveReader.java resolver/AARBasedWSDLLocator.java resolver/AARFileBasedURIResolver.java util/Utils.java

Author: dims
Date: Mon Oct 30 20:43:10 2006
New Revision: 469369

URL: http://svn.apache.org/viewvc?view=rev&rev=469369
Log:
Fix for AXIS2-1556 - DeploymentException with segmented wsdl files

- Behave better if there are multiple hierarchical wsdl's.
- Behave better if there is a "./xyz.wsdl" or "./xyz.xsd"


Modified:
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java?view=diff&rev=469369&r1=469368&r2=469369
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java Mon Oct 30 20:43:10 2006
@@ -199,7 +199,11 @@
             }
             return axisServiceBuilder.populateService();
         } catch (AxisFault axisFault) {
-            throw new DeploymentException(axisFault);
+            log.info("Trouble processing wsdl file :" + axisFault.getMessage());
+            if(log.isDebugEnabled()) {
+                log.debug(axisFault);
+            }
+            return null;
         }
     }
 
@@ -285,10 +289,10 @@
                                 new DeploymentException(Messages.getMessage("invalidWSDLFound"));
                             }
                             AxisService service = processWSDLFile(wsdlToAxisServiceBuilder, serviceFile, true, new ByteArrayInputStream(out.toByteArray()));
-                            servicesMap.put(service.getName(), service);
+                            if(service != null) {
+                                servicesMap.put(service.getName(), service);
+                            }
                         }
-
-
                     }
                 }
                 try {
@@ -349,7 +353,9 @@
                     } catch (IOException e) {
                         log.info(e);
                     }
-                    servicesMap.put(service.getName(), service);
+                    if(service != null) {
+                        servicesMap.put(service.getName(), service);
+                    }
                 }
 
                 try {

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java?view=diff&rev=469369&r1=469368&r2=469369
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java Mon Oct 30 20:43:10 2006
@@ -78,6 +78,7 @@
                 if (parentLocation != null && parentLocation.length() > 0) {
                     importLocation = Utils.getPath(parentLocation, importLocation);
                 }
+                importLocation = Utils.normalize(importLocation);
                 while ((entry = zin.getNextEntry()) != null) {
                     String entryName = entry.getName().toLowerCase();
                     searchingStr = (DeploymentConstants.META_INF + "/" + importLocation).toLowerCase();

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java?view=diff&rev=469369&r1=469368&r2=469369
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java Mon Oct 30 20:43:10 2006
@@ -82,6 +82,7 @@
                 if (baseUri != null && baseUri.length() > 0) {
                     schemaLocation = Utils.getPath(baseUri, schemaLocation);
                 }
+                schemaLocation = Utils.normalize(schemaLocation);
                 while ((entry = zin.getNextEntry()) != null) {
                     String entryName = entry.getName().toLowerCase();
                     searchingStr = (DeploymentConstants.META_INF + "/" + schemaLocation).toLowerCase();

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?view=diff&rev=469369&r1=469368&r2=469369
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java Mon Oct 30 20:43:10 2006
@@ -458,6 +458,53 @@
         }
     }
 
+    /**
+     * Normalize a uri containing ../ and ./ paths.
+     *
+     * @param uri The uri path to normalize
+     * @return The normalized uri
+     */
+    public static String normalize(String uri) {
+        if ("".equals(uri)) {
+            return uri;
+        }
+        int leadingSlashes = 0;
+        for (leadingSlashes = 0 ; leadingSlashes < uri.length()
+                && uri.charAt(leadingSlashes) == '/' ; ++leadingSlashes) {}
+        boolean isDir = (uri.charAt(uri.length() - 1) == '/');
+        StringTokenizer st = new StringTokenizer(uri, "/");
+        LinkedList clean = new LinkedList();
+        while (st.hasMoreTokens()) {
+            String token = st.nextToken();
+            if ("..".equals(token)) {
+                if (! clean.isEmpty() && ! "..".equals(clean.getLast())) {
+                    clean.removeLast();
+                    if (! st.hasMoreTokens()) {
+                        isDir = true;
+                    }
+                } else {
+                    clean.add("..");
+                }
+            } else if (! ".".equals(token) && ! "".equals(token)) {
+                clean.add(token);
+            }
+        }
+        StringBuffer sb = new StringBuffer();
+        while (leadingSlashes-- > 0) {
+            sb.append('/');
+        }
+        for (Iterator it = clean.iterator() ; it.hasNext() ; ) {
+            sb.append(it.next());
+            if (it.hasNext()) {
+                sb.append('/');
+            }
+        }
+        if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') {
+            sb.append('/');
+        }
+        return sb.toString();
+    }
+
     public static String getPath(String parent, String childPath) {
         Stack parentStack = new Stack();
         Stack childStack = new Stack();



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org