[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