[jboss-svn-commits] JBL Code SVN: r25655 - in labs/jbossesb/branches/JBESB_4_4_GA_FP/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:18 -0400 (Sun, 15 Mar 2009)
New Revision: 25655
Added:
labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
labs/jbossesb/branches/JBESB_4_4_GA_FP/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/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java 2009-03-15 21:46:17 UTC (rev 25654)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java 2009-03-15 21:46:18 UTC (rev 25655)
@@ -27,6 +27,8 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.HashSet;
import javax.wsdl.Binding;
import javax.wsdl.BindingFault;
@@ -78,6 +80,7 @@
// add types
Types types = def.createTypes();
def.setTypes(types);
+ Set<String> schemasAdded = new HashSet<String>();
Message reqMessage = null;
Message resMessage = null;
@@ -94,6 +97,10 @@
.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);
}
@@ -108,8 +115,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);
@@ -126,8 +135,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) {
@@ -334,4 +345,16 @@
}
return wsdlFactory ;
}
+
+ /**
+ * 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);
+ }
}
Modified: labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java 2009-03-15 21:46:17 UTC (rev 25654)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/ESBContractGeneratorUnitTest.java 2009-03-15 21:46:18 UTC (rev 25655)
@@ -27,6 +27,7 @@
import javax.wsdl.Definition;
import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.Types;
import junit.framework.TestCase;
@@ -60,8 +61,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());
+ }
+
- private void executeTest(final String resourceName) throws Exception {
+ private Definition executeTest(final String resourceName) throws Exception {
final InputStream is = ClassUtil.getResourceAsStream(resourceName, getClass()) ;
final byte[] configBytes = StreamUtils.readStream(is) ;
ByteArrayOutputStream listenerXml = new ByteArrayOutputStream();
@@ -76,6 +85,7 @@
InputSource inputSource = new InputSource(strReader);
Definition def = WSDLFactory.newInstance().newWSDLReader().readWSDL("file://tmp.wsdl", inputSource);
assertNotNull("Failed to generate wsdl file" , def);
+ return def;
}
}
Added: labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml (rev 0)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/jbossesb_duplicate_schemas.xml 2009-03-15 21:46:18 UTC (rev 25655)
@@ -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