You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2015/07/18 18:55:28 UTC

svn commit: r1691753 - in /webservices/woden/trunk/java/woden-core/src: main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java test/java/org/apache/woden/MultiSchemaTest.java

Author: veithen
Date: Sat Jul 18 16:55:27 2015
New Revision: 1691753

URL: http://svn.apache.org/r1691753
Log:
Fix a regression for WODEN-13/WSCOMMONS-120.

Added:
    webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java   (with props)
Modified:
    webservices/woden/trunk/java/woden-core/src/main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java

Modified: webservices/woden/trunk/java/woden-core/src/main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/woden/trunk/java/woden-core/src/main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java?rev=1691753&r1=1691752&r2=1691753&view=diff
==============================================================================
--- webservices/woden/trunk/java/woden-core/src/main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java (original)
+++ webservices/woden/trunk/java/woden-core/src/main/java/org/apache/woden/internal/wsdl20/ComponentModelBuilder.java Sat Jul 18 16:55:27 2015
@@ -17,6 +17,7 @@
 package org.apache.woden.internal.wsdl20;
 
 import java.net.URI;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Vector;
@@ -84,7 +85,10 @@ public class ComponentModelBuilder {
 	// buildElementDeclarations()
     private List fDescTypesDone = new Vector();
     
-	private List fSchemasDone = new Vector();
+    // XmlSchema implements equals, but in a way that is questionable and that causes problems
+    // for Woden. Since there is no IdentityHashSet, use an IdentityHashMap to track schemas
+    // we have already processed.
+	private Map<XmlSchema,XmlSchema> fSchemasDone = new IdentityHashMap<XmlSchema,XmlSchema>();
 
 	private List fInterfacesDone = new Vector();
 
@@ -161,7 +165,7 @@ public class ComponentModelBuilder {
             XmlSchema xmlSchema;
             for(int i=0; i<schemas.length; i++) {
                 xmlSchema = schemas[i].getSchemaDefinition();
-                if(xmlSchema != null && !fSchemasDone.contains(xmlSchema)) {
+                if(xmlSchema != null && !fSchemasDone.containsKey(xmlSchema)) {
                     buildElementsAndTypes(
                             xmlSchema, xmlSchema.getTargetNamespace(), typeSystemURI, importedNSpaces);
                 }
@@ -204,10 +208,10 @@ public class ComponentModelBuilder {
     
     private void buildElementsAndTypes(XmlSchema schemaDef, String schemaTns, URI typeSystemURI, List importedNSpaces) {
         
-        if(fSchemasDone.contains(schemaDef)) {
+        if(fSchemasDone.containsKey(schemaDef)) {
             return;
         } else {
-            fSchemasDone.add(schemaDef);
+            fSchemasDone.put(schemaDef, schemaDef);
         }
         
         //process elements and types declared directly in this schema

Added: webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java
URL: http://svn.apache.org/viewvc/webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java?rev=1691753&view=auto
==============================================================================
--- webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java (added)
+++ webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java Sat Jul 18 16:55:27 2015
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.woden;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.woden.wsdl20.Description;
+
+public class MultiSchemaTest extends TestCase {
+    /**
+     * Regression test for WODEN-13/WSCOMMONS-120.
+     */
+    public void test() throws Exception {
+        WSDLFactory factory = WSDLFactory.newInstance();
+        WSDLReader reader = factory.newWSDLReader();
+        Description desc = reader.readWSDL(MultiSchemaTest.class.getResource("echo.wsdl").toString());
+        assertNotNull(desc.getElementDeclaration(new QName("http://echo.services.core.carbon.wso2.org", "echoIntResponse")));
+    }
+}

Propchange: webservices/woden/trunk/java/woden-core/src/test/java/org/apache/woden/MultiSchemaTest.java
------------------------------------------------------------------------------
    svn:eol-style = native