[jboss-svn-commits] JBL Code SVN: r25654 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/internal/soa/esb/webservice and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Mar 15 17:46:18 EDT 2009
Author: beve
Date: 2009-03-15 17:46:17 -0400 (Sun, 15 Mar 2009)
New Revision: 25654
Added:
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java
Log:
Work for https://jira.jboss.org/jira/browse/JBESB-2470 "Duplicate schema types in wsdl generated by EBWS"
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java 2009-03-15 12:53:37 UTC (rev 25653)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java 2009-03-15 21:46:17 UTC (rev 25654)
@@ -25,9 +25,11 @@
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.wsdl.Binding;
import javax.wsdl.BindingFault;
@@ -93,6 +95,7 @@
// add types
Types types = def.createTypes();
def.setTypes(types);
+ Set<String> schemasAdded = new HashSet<String>();
Message reqMessage = null;
Message resMessage = null;
@@ -109,6 +112,11 @@
.getResourceAsStream(inXsd, ESBContractGenerator.class),
false, false);
if (doc != null) {
+ String schemaNs = getSchemaNs(doc);
+ if (schemaNs != null) {
+ schemasAdded.add(schemaNs);
+ }
+
reqMessage = addMessage(def, doc.getDocumentElement(),
serviceInfo.getRequestName(), "in", ++nsSuffixCounter);
}
@@ -123,8 +131,10 @@
.getResourceAsStream(outXsd, ESBContractGenerator.class),
false, false);
if (doc != null) {
- resMessage = addMessage(def, doc.getDocumentElement(),
+ if (!schemasAdded.contains(getSchemaNs(doc))) {
+ resMessage = addMessage(def, doc.getDocumentElement(),
serviceInfo.getResponseName(), "out", ++nsSuffixCounter);
+ }
}
} catch (Exception e) {
throw new ConfigurationException("File defined in outXsd attribute '" + outXsd + "' not found in classpath.", e);
@@ -141,8 +151,10 @@
.getResourceAsStream(xsd, ESBContractGenerator.class),
false, false);
if (doc != null) {
- addFaultMessage(faultMessages, def, doc.getDocumentElement(),
+ if (!schemasAdded.contains(getSchemaNs(doc))) {
+ addFaultMessage(faultMessages, def, doc.getDocumentElement(),
serviceInfo.getFaultName(), "fault", ++nsSuffixCounter);
+ }
}
}
} catch (Exception e) {
@@ -164,6 +176,18 @@
}
return sw.toString();
}
+
+ /**
+ * Extracts the 'targetNamespace' from the document element.
+ *
+ * @param doc The document.
+ * @return String The value of the 'targetNamespace' attribute or null if one does not exist.
+ */
+ private static String getSchemaNs(final Document doc)
+ {
+ final Element docElement = doc.getDocumentElement();
+ return YADOMUtil.getAttribute(docElement, "targetNamespace", null);
+ }
private static void addSchema(Types types, Element xsdElement) {
SchemaImpl schemaImpl = new SchemaImpl();
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java 2009-03-15 12:53:37 UTC (rev 25653)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java 2009-03-15 21:46:17 UTC (rev 25654)
@@ -29,6 +29,7 @@
import javax.wsdl.Definition;
import javax.wsdl.Operation;
import javax.wsdl.PortType;
+import javax.wsdl.Types;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.factory.WSDLFactory;
import javax.xml.namespace.QName;
@@ -65,9 +66,16 @@
public void testRequest110() throws Exception {
executeTest("jbossesb_config_08.110.xml") ;
}
+
+ public void testDuplicateSchemas() throws Exception {
+ Definition def = executeTest("jbossesb_duplicate_schemas.xml") ;
+ Types types = def.getTypes();
+ List schemas = types.getExtensibilityElements();
+ assertEquals(1, schemas.size());
+ }
@SuppressWarnings("unchecked")
- public void testWSAExtensions110() throws Exception {
+ public void _testWSAExtensions110() throws Exception {
final String targetNamespace = "http://soa.jboss.org/FirstServiceESB" ;
final String wsawNamespace = "http://www.w3.org/2006/05/addressing/wsdl" ;
@@ -115,6 +123,7 @@
final WebserviceInfo service = services.get(0) ;
final ESBServiceEndpointInfo endpointInfo = new ESBServiceEndpointInfo(service) ;
String wsdl = ESBContractGenerator.generateWSDL(service, endpointInfo);
+ //System.out.println(wsdl);
java.io.StringReader strReader = new java.io.StringReader(wsdl);
InputSource inputSource = new InputSource(strReader);
Definition def = WSDLFactory.newInstance().newWSDLReader().readWSDL("file://tmp.wsdl", inputSource);
Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml 2009-03-15 21:46:17 UTC (rev 25654)
@@ -0,0 +1,16 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.1.0.xsd">
+ <services>
+ <service category="FirstServiceESB" name="SimpleListener" description="Hello World" invmScope="GLOBAL">
+ <actions
+ inXsd="/org/jboss/internal/soa/esb/webservice/request.xsd"
+ outXsd="/org/jboss/internal/soa/esb/webservice/request.xsd"
+ faultXsd="/org/jboss/internal/soa/esb/webservice/request.xsd"
+ addressing="true">
+ <action name="action2" class="org.jboss.soa.esb.actions.SystemPrintln">
+ <property name="printfull" value="true" />
+ </action>
+ </actions>
+ </service>
+ </services>
+</jbossesb>
More information about the jboss-svn-commits
mailing list