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