[jboss-svn-commits] JBL Code SVN: r20634 - in labs/jbossesb/workspace/jimma/product/rosetta: src/org/jboss/internal/soa/esb/publish and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 19 04:15:15 EDT 2008


Author: jim.ma
Date: 2008-06-19 04:15:15 -0400 (Thu, 19 Jun 2008)
New Revision: 20634

Added:
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jaxwsprovider-methodbody.template
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jbossweb-xml.template
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/web-xml.template
Modified:
   labs/jbossesb/workspace/jimma/product/rosetta/build.xml
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/publish/ServiceContractPublisher.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWarGenerator.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWebServicePublisher.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/Configuration.java
   labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/ServicePublisher.java
   labs/jbossesb/workspace/jimma/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
Log:
* Use a template to generate web.xml, jboss-web.xml and jaxwsprovider class method body 
* Add jboss-web.xml to add the esb deployment dependency
* Define exceptions for bunch of classes
 


Modified: labs/jbossesb/workspace/jimma/product/rosetta/build.xml
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/build.xml	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/build.xml	2008-06-19 08:15:15 UTC (rev 20634)
@@ -50,7 +50,11 @@
             >
             <src path="${org.jboss.esb.rosetta.src.dir}"/>
         </javac>
+        <copy todir="${org.jboss.esb.rosetta.classes.dir}">
+              <fileset dir="${org.jboss.esb.rosetta.src.dir}" includes="**/*.template"/>
+       </copy>
 
+
     </target>
 
 	<target name="recompile" depends="clean,org.jboss.esb.rosetta.compile"
@@ -82,7 +86,8 @@
 				excludes="test/**"
                 >
         	<fileset dir="${org.jboss.esb.rosetta.src.dir}" includes="**/*.groovy"/>
-            <fileset dir="${org.jboss.esb.rosetta.src.dir}" includes="**/*.properties"/>
+                <fileset dir="${org.jboss.esb.rosetta.src.dir}" includes="**/*.properties"/>
+                <fileset dir="${org.jboss.esb.rosetta.src.dir}" includes="**/*.template"/>
        	</jar>
         <jar destfile="${org.jboss.esb.rosetta.distrib.dir}/lib/test-util.jar">
             <fileset dir="${org.jboss.esb.internal.dest}/tests/"

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/publish/ServiceContractPublisher.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/publish/ServiceContractPublisher.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/publish/ServiceContractPublisher.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -19,6 +19,7 @@
  */
 package org.jboss.internal.soa.esb.publish;
 
+import java.io.IOException;
 import java.io.StringWriter;
 
 import javax.wsdl.Binding;
@@ -47,6 +48,7 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
 
 import com.ibm.wsdl.extensions.schema.SchemaImpl;
 import com.ibm.wsdl.extensions.soap.SOAPAddressImpl;
@@ -57,17 +59,11 @@
 	String wsdl;
 	Definition def = null;
 	int nsSuffixCounter = 1;
-	Service serviceCfg;
 
-	public void setServiceConfig(Service serviceConfig)
-			throws ConfigurationException {
-		serviceCfg = serviceConfig;
-
-	}
     //TODO:Handle the exception
-	public void generateWSDL() {
-		String targetNamespace = "http://soa.jboss.org/" + serviceCfg.getCategory().toLowerCase();
-		String serviceName = serviceCfg.getName();
+	public void generateWSDL(Service serviceConfig) throws ConfigurationException {
+		String targetNamespace = "http://soa.jboss.org/" + serviceConfig.getCategory().toLowerCase();
+		String serviceName = serviceConfig.getName();
 		try {
 			def = WSDLFactory.newInstance().newDefinition();
 		} catch (WSDLException e1) {
@@ -84,9 +80,9 @@
 		Message resMessage = null;
 		Message faultMessage = null;
 
-		String inXsd = serviceCfg.getActions().getInXsd();
-		String outXsd = serviceCfg.getActions().getOutXsd();
-		String faultXsd = serviceCfg.getActions().getFaultXsd();
+		String inXsd = serviceConfig.getActions().getInXsd();
+		String outXsd = serviceConfig.getActions().getOutXsd();
+		String faultXsd = serviceConfig.getActions().getFaultXsd();
 
 		if (inXsd != null) {
 			try {
@@ -96,9 +92,12 @@
 					reqMessage = addMessage(doc.getDocumentElement(),
 							serviceName + "Req", "in");
 				}
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
+			} catch (IOException e) {
+				throw new ConfigurationException("File defined in inXsd attribute '" + serviceConfig.getActions().getInXsd() + "' not found in classpath.", e);
+			} catch (SAXException e) {
+				throw new ConfigurationException("invalid inXsd file for service:" + serviceConfig.getCategory() + "/" + serviceConfig.getName() , e);
+			} 
+		
 
 		}
 
@@ -110,9 +109,11 @@
 					resMessage = addMessage(doc.getDocumentElement(),
 							serviceName + "Res", "out");
 				}
-			} catch (Exception e) {
-			   //
-			}
+			} catch (IOException e) {
+				throw new ConfigurationException("File defined in outXsd attribute '" + serviceConfig.getActions().getOutXsd() + "' not found in classpath.", e);
+			} catch (SAXException e) {
+				throw new ConfigurationException("Invalid outXsd file for service:" + serviceConfig.getCategory() + "/" + serviceConfig.getName() , e);
+			} 
 
 		}
 
@@ -125,9 +126,11 @@
 					faultMessage = addMessage(doc.getDocumentElement(),
 							serviceName + "fault", "fault");
 				}
-			} catch (Exception e) {
-				//
-			}
+			} catch (IOException e) {
+				throw new ConfigurationException("File defined in faultXsd attribute '" + serviceConfig.getActions().getFaultXsd() + "' not found in classpath.", e);
+			} catch (SAXException e) {
+				throw new ConfigurationException("Invalid faultXsd file for service:" + serviceConfig.getCategory() + "/" + serviceConfig.getName() , e);
+			} 
 
 		}
 
@@ -139,6 +142,7 @@
 		try {
 			WSDLFactory.newInstance().newWSDLWriter().writeWSDL(def, sw);
 		} catch (WSDLException e) {
+			new ConfigurationException("Failed to generate wsdl for service:" + serviceConfig.getCategory() + "/" + serviceConfig.getName() , e);
 		}
 		wsdl = sw.toString();
 	}

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -21,6 +21,8 @@
 
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.jboss.deployment.DeploymentInfo;
+
 public class ESBServiceEndpointInfo {
 	private ConcurrentHashMap<String, Object> properties = new ConcurrentHashMap<String, Object>();
 	private Class<?> epClass;
@@ -28,6 +30,7 @@
 	private String svcName;
 	private String wsdl;
 	private String targetNS;
+	private DeploymentInfo deploymentInfo;
 	public ESBServiceEndpointInfo(String serviceCategory, String serviceName) {
 		svcCat = serviceCategory;
 		svcName = serviceName;		
@@ -58,11 +61,11 @@
 		properties.put(key, obj);
 	}
     
-	public String getServiceDirectory() {
+	public String getServiceCategory() {
 		return svcCat;
 	}
 	
-	public void setServiceDirectory(String value) {
+	public void setServiceCategory(String value) {
 		svcCat = value;
 	}
 	
@@ -75,11 +78,11 @@
 	}
 	
 	public String getEndpointName() {
-		 return this.getServiceDirectory() + "." + this.getServiceName();
+		 return this.getServiceCategory() + "." + this.getServiceName();
 	}
 	
 	public String getWSEndpointClassName() {
-		return "org.jboss.soa." + this.svcCat.toLowerCase() + "." + this.svcName;
+		return "org.jboss.soa." + svcCat.toLowerCase() + "." + svcName;
 	}
 	
 	public void setTargetNamespace(String value) {
@@ -91,7 +94,7 @@
 	}
 	
 	public String getWSDLFileName() {
-		return svcCat.toLowerCase() + "_" + svcName.toLowerCase() + ".wsdl";
+		return svcCat.toLowerCase() + "-" + svcName.toLowerCase() + ".wsdl";
 	}
 	
 	public String getWSDLServiceName() {
@@ -101,5 +104,13 @@
 	public String getWSDLPortName() {
 		return svcName + "Port";
 	}
+	
+	public void setDeploymentInfo(DeploymentInfo di) {
+		this.deploymentInfo = di;
+	}
+	
+	public DeploymentInfo getDeploymentInfo() {
+		return deploymentInfo;
+	}
 
 }

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -19,10 +19,15 @@
  */
 package org.jboss.internal.soa.esb.webservice;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+
 import javassist.ClassPool;
 import javassist.CtClass;
 import javassist.CtMethod;
 import javassist.CtNewMethod;
+import javassist.NotFoundException;
 import javassist.bytecode.AnnotationsAttribute;
 import javassist.bytecode.ConstPool;
 import javassist.bytecode.SignatureAttribute;
@@ -30,22 +35,36 @@
 import javassist.bytecode.annotation.EnumMemberValue;
 import javassist.bytecode.annotation.StringMemberValue;
 
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.commons.io.IOUtils;
+import org.jboss.soa.esb.util.ClassUtil;
+
 public class JAXWSProviderClassGenerator {
-	public CtClass generate(ESBServiceEndpointInfo epInfo) throws WebServicePublishException {
+	public CtClass generate(ESBServiceEndpointInfo epInfo)
+			throws WebServicePublishException {
 		ClassPool pool = ClassPool.getDefault();
-		CtClass seiClass = pool.makeClass(epInfo.getWSEndpointClassName());
+		CtClass seiClass = null;
 		try {
-			CtClass providerClass = pool
-					.get("javax.xml.ws.Provider");
-			seiClass.setInterfaces(new CtClass[] { providerClass });			
-		    
-		    
+			seiClass = pool.get(epInfo.getWSEndpointClassName());
+		} catch (NotFoundException e1) {
+			// do nothing
+		}
+		if (seiClass != null) {
+			return seiClass;
+		} else {
+			seiClass = pool.makeClass(epInfo.getWSEndpointClassName());
+		}
+
+		try {
+			CtClass providerClass = pool.get("javax.xml.ws.Provider");
+			seiClass.setInterfaces(new CtClass[] { providerClass });
+
 			ConstPool constantPool = seiClass.getClassFile().getConstPool();
 			AnnotationsAttribute attribute = new AnnotationsAttribute(
 					constantPool, AnnotationsAttribute.visibleTag);
 			Annotation annotation = new Annotation(
 					"javax.xml.ws.WebServiceProvider", constantPool);
-			StringMemberValue  strValue1 = new StringMemberValue(constantPool);
+			StringMemberValue strValue1 = new StringMemberValue(constantPool);
 			strValue1.setValue("/WEB-INF/wsdl/" + epInfo.getWSDLFileName());
 			annotation.addMemberValue("wsdlLocation", strValue1);
 			StringMemberValue strValue2 = new StringMemberValue(constantPool);
@@ -54,51 +73,54 @@
 			StringMemberValue strValue3 = new StringMemberValue(constantPool);
 			strValue3.setValue(epInfo.getWSDLPortName());
 			annotation.addMemberValue("portName", strValue3);
-			
+
 			StringMemberValue strValue4 = new StringMemberValue(constantPool);
 			strValue4.setValue(epInfo.getTargetNamesapce());
 			annotation.addMemberValue("targetNamespace", strValue4);
-			
+
 			attribute.addAnnotation(annotation);
-			
-			Annotation annotation2= new Annotation(
-					"javax.xml.ws.ServiceMode", constantPool);
+
+			Annotation annotation2 = new Annotation("javax.xml.ws.ServiceMode",
+					constantPool);
 			EnumMemberValue enumValue = new EnumMemberValue(constantPool);
-			//CtClass serviceMode = pool.get("javax.xml.ws.Service$Mode");
 			enumValue.setType("javax.xml.ws.Service$Mode");
 			enumValue.setValue("MESSAGE");
 			annotation2.addMemberValue("value", enumValue);
 			attribute.addAnnotation(annotation2);
 			seiClass.getClassFile().addAttribute(attribute);
-			CtMethod m = CtNewMethod.make("public Object invoke(Object obj) " 
+			CtMethod m = CtNewMethod.make("public Object invoke(Object obj) "
 					+ getMethodBody(epInfo), seiClass);
-		    seiClass.addMethod(m);
-		    //add generics for class
-		    SignatureAttribute signatureAttribute = new SignatureAttribute(seiClass.getClassFile().getConstPool(), 
-		    		"Ljava/lang/Object;Ljavax/xml/ws/Provider<Ljavax/xml/soap/SOAPMessage;>;");
-		    seiClass.getClassFile().addAttribute(signatureAttribute);
-		    
+			seiClass.addMethod(m);
+			// add generics for class
+			SignatureAttribute signatureAttribute = new SignatureAttribute(
+					seiClass.getClassFile().getConstPool(),
+					"Ljava/lang/Object;Ljavax/xml/ws/Provider<Ljavax/xml/soap/SOAPMessage;>;");
+			seiClass.getClassFile().addAttribute(signatureAttribute);
+			// seiClass.freeze();
+
 		} catch (Exception e) {
-			
-			throw new WebServicePublishException("Failed to generate jaxws dispatch class for ESB service", e);
-		} 
-        
+
+			throw new WebServicePublishException(
+					"Failed to generate jaxws dispatch class for ESB service",
+					e);
+		}
+
 		return seiClass;
 	}
-	
-	
-	public String getMethodBody(ESBServiceEndpointInfo epInfo) {
-		String body = "{ "
-			   + "javax.xml.soap.SOAPMessage request = (javax.xml.soap.SOAPMessage)obj;"
-		       + "try {" 
-			   + "org.jboss.soa.esb.client.ServiceInvoker serviceInvoker = new org.jboss.soa.esb.client.ServiceInvoker(" 
-			   + "\"" + epInfo.getServiceDirectory() + "\"," + "\"" + epInfo.getServiceName()+ "\");";
-		body = body + "org.jboss.soa.esb.message.Message msg = org.jboss.soa.esb.message.format.MessageFactory.getInstance().getMessage();";
-		body = body + "msg.getBody().add(request.getSOAPBody().toString());";
-		body = body + "org.jboss.soa.esb.message.Message resMsg = serviceInvoker.deliverSync(msg, (long)2000);";
-		body = body + "System.out.println(\"---res msg --- \"+ resMsg.getBody().get().toString());";
-		body = body + "} catch (Exception e) { e.printStackTrace();} ";
-		body = body + "return request;}";
-		return body;
+
+	public String getMethodBody(ESBServiceEndpointInfo epInfo)
+			throws IOException {
+
+		InputStream in = ClassUtil.getResourceAsStream(
+				"jaxwsprovider-methodbody.template", getClass());
+		StringWriter strWriter = new StringWriter();
+
+		IOUtils.copy(in, strWriter);
+
+		StringTemplate template = new StringTemplate(strWriter.toString());
+		template.setAttribute("Category", epInfo.getServiceCategory());
+		template.setAttribute("ServiceName", epInfo.getServiceName());
+		return template.toString();
+
 	}
 }

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWarGenerator.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWarGenerator.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWarGenerator.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -23,13 +23,18 @@
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javassist.CtClass;
 
+import org.antlr.stringtemplate.StringTemplate;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
+import org.jboss.soa.esb.util.ClassUtil;
 import org.jboss.util.file.JarUtils;
 
 public class JBossWSWarGenerator {
@@ -41,7 +46,7 @@
 
 	public JBossWSWarGenerator(ESBServiceEndpointInfo endpoint) {
 		endpointInfo = endpoint;
-		warName = (endpoint.getServiceDirectory() + "-" + endpoint
+		warName = (endpoint.getServiceCategory().toLowerCase() + "-" + endpoint
 				.getServiceName()).toLowerCase();
 
 	}
@@ -50,6 +55,7 @@
 		try {
 			addFile(generateWebXml());
 			addFile(generateWSDLFile());
+			addFile(generateJbossWebXml());
 			File warTmp = File.createTempFile(endpointInfo.getEndpointName()
 					+ "war", "dir");
 			warTmp.delete();
@@ -59,7 +65,7 @@
 
 			for (File file : fileList) {
 				File dir = new File(warDir.getCanonicalPath() + File.separator
-						+ file.getParentFile().getName());
+						+ file.getParentFile().getPath());
 
 				if (!dir.exists()) {
 					dir.mkdirs();
@@ -71,7 +77,6 @@
 			JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator();
 			CtClass providerClass = generator.generate(endpointInfo);
 			providerClass.writeFile(warDir.getCanonicalPath());
-
 			File warFile = new File(warTmp + File.separator + warName + ".war");
 			warFile.createNewFile();
 			FileOutputStream fout = new FileOutputStream(warFile);
@@ -163,24 +168,32 @@
 		fileList.add(file);
 	}
 
-	// TODO:Use a template file to do this?
+	
 	private File generateWebXml() throws IOException {
-		String webXmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-				+ "<web-app xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
-				+ " xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\""
-				+ " version=\"2.4\">" + "<servlet>" + "<servlet-name>"
-				+ endpointInfo.getServiceName() + "</servlet-name>"
-				+ "<servlet-class>" + endpointInfo.getWSEndpointClassName()
-				+ "</servlet-class>" + "</servlet>" + "<servlet-mapping>"
-				+ "<servlet-name>" + endpointInfo.getServiceName()
-				+ "</servlet-name>" + "<url-pattern>/"
-				+ endpointInfo.getServiceDirectory() + "/"
-				+ endpointInfo.getServiceName() + "</url-pattern>"
-				+ "</servlet-mapping>" + "</web-app>";
+        
+		InputStream inTemplate = ClassUtil.getResourceAsStream("web-xml.template", getClass());
+		StringWriter strWriter = new StringWriter();
+		IOUtils.copy(inTemplate, strWriter);
+        StringTemplate template = new StringTemplate(strWriter.toString());
+        template.setAttribute("ServiceName", endpointInfo.getServiceName());
+        template.setAttribute("Category", endpointInfo.getServiceCategory());
+        template.setAttribute("EndpointClassName", endpointInfo.getWSEndpointClassName());
 		File webXml = new File("WEB-INF/web.xml");
-		FileUtils.writeStringToFile(webXml, webXmlContent);
+		FileUtils.writeStringToFile(webXml, template.toString());
 		return webXml;
 	}
+	
+	private File generateJbossWebXml() throws IOException {
+		InputStream inTemplate = ClassUtil.getResourceAsStream("jbossweb-xml.template", getClass());
+		StringWriter strWriter = new StringWriter();
+		IOUtils.copy(inTemplate, strWriter);
+        StringTemplate template = new StringTemplate(strWriter.toString());
+        template.setAttribute("ESBArtifact", endpointInfo.getDeploymentInfo().shortName);
+		File jbossWebXml = new File("WEB-INF/jboss-web.xml");
+		FileUtils.writeStringToFile(jbossWebXml, template.toString());
+		return jbossWebXml;
+	}
+	
 
 	private File generateWSDLFile() throws IOException {
 		File wsdlFile = new File("WEB-INF/wsdl/"

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWebServicePublisher.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWebServicePublisher.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JBossWSWebServicePublisher.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -29,7 +29,7 @@
 		} catch (WebServicePublishException e) {
 			throw new WebServicePublishException(
 					"Failed to publish webservice "
-							+ endpoint.getServiceDirectory()+ "/" + endpoint.getServiceName() + " for service "
+							+ endpoint.getServiceCategory()+ "/" + endpoint.getServiceName() + " for service "
 							+ esbService.getName(), e);
 		}
 	}

Added: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jaxwsprovider-methodbody.template
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jaxwsprovider-methodbody.template	                        (rev 0)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jaxwsprovider-methodbody.template	2008-06-19 08:15:15 UTC (rev 20634)
@@ -0,0 +1,11 @@
+{   javax.xml.soap.SOAPMessage request = (javax.xml.soap.SOAPMessage)obj;
+    try {
+	     org.jboss.soa.esb.client.ServiceInvoker serviceInvoker = new org.jboss.soa.esb.client.ServiceInvoker("$Category$", "$ServiceName$");
+		 org.jboss.soa.esb.message.Message msg = org.jboss.soa.esb.message.format.MessageFactory.getInstance().getMessage();
+		 msg.getBody().add(request.getSOAPBody().toString());
+		 org.jboss.soa.esb.message.Message resMsg = serviceInvoker.deliverSync(msg, (long)2000);
+     } catch (Exception e) { 
+          e.printStackTrace();
+     } 
+		return request;
+}
\ No newline at end of file

Added: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jbossweb-xml.template
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jbossweb-xml.template	                        (rev 0)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/jbossweb-xml.template	2008-06-19 08:15:15 UTC (rev 20634)
@@ -0,0 +1,5 @@
+<jboss-web>
+<depends>
+jboss.esb:deployment=$ESBArtifact$
+</depends>
+</jboss-web>
\ No newline at end of file

Added: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/web-xml.template
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/web-xml.template	                        (rev 0)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/internal/soa/esb/webservice/web-xml.template	2008-06-19 08:15:15 UTC (rev 20634)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
+    <servlet> 
+      <servlet-name>$ServiceName$</servlet-name>
+	  <servlet-class>$EndpointClassName$</servlet-class>
+    </servlet>
+    <servlet-mapping>
+	  <servlet-name>$ServiceName$</servlet-name>
+	  <url-pattern>/$Category$/$ServiceName$</url-pattern>
+    </servlet-mapping>
+</web-app>
\ No newline at end of file

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/Configuration.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/Configuration.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/Configuration.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -142,16 +142,16 @@
             		 ServiceContractPublisher serviceContractpublisher = (ServiceContractPublisher)publisher.getContractPublisher();
             		 String wsdl = serviceContractpublisher.getWSDL();
             		 ESBServiceEndpointInfo endpoint = new ESBServiceEndpointInfo(publisher.getCategory(), publisher.getServiceName());
-            		 File publishedWar = new File(deployDir.getCanonicalPath(), publisher.getCategory().toLowerCase() + "_" + publisher.getServiceName() + ".war");
+            		 File publishedWar = new File(deployDir.getCanonicalPath(), publisher.getCategory().toLowerCase() + "-" + publisher.getServiceName().toLowerCase() + ".war");
             		 if (publishedWar.exists()) {
             			 continue;
             		 }
             		 endpoint.setWSDL(wsdl);
             		 endpoint.setTargetNamespace("http://soa.jboss.org/" + publisher.getCategory().toLowerCase());
+            		 endpoint.setDeploymentInfo(di);
             		 //publish this esb service to web service
             		 WebServicePublisher esbServicePublisher = new JBossWSWebServicePublisher();
-            		 esbServicePublisher.publish(endpoint, esbFile);
-            		
+            		 esbServicePublisher.publish(endpoint, esbFile);            		
             	 }
              }
             return controller;

Modified: labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/ServicePublisher.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/ServicePublisher.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/src/org/jboss/soa/esb/listeners/config/ServicePublisher.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -179,13 +179,11 @@
         }
         if (service.getActions().getInXsd() != null) 
         {
-           ServiceContractPublisher  publisher = new ServiceContractPublisher();
-           
+           ServiceContractPublisher  publisher = new ServiceContractPublisher();          
            try {
-        	     publisher.setServiceConfig(service);
-        	     publisher.generateWSDL();
+        	     publisher.generateWSDL(service);
            } catch (ConfigurationException e) {
-        	     throw new RuntimeException("Failed to instantiate Service Contract Publisher '" + publisher.getClass().getName() + "'. Class must implement a public default constructor.", e);
+        	     throw new RuntimeException("Failed to instantiate ServiceContractPublisher for service '" + service.getCategory() + "/" + service.getName() + "'" , e);
            }
            return publisher;
         }

Modified: labs/jbossesb/workspace/jimma/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
===================================================================
--- labs/jbossesb/workspace/jimma/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java	2008-06-19 06:30:14 UTC (rev 20633)
+++ labs/jbossesb/workspace/jimma/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java	2008-06-19 08:15:15 UTC (rev 20634)
@@ -1,8 +1,10 @@
 package org.jboss.internal.soa.esb.webservice;
 
 import java.io.File;
+import java.io.IOException;
 
 import javassist.CtClass;
+
 import junit.framework.TestCase;
 
 public class JAXWSProviderClassGeneratorUnitTest extends TestCase {
@@ -22,5 +24,18 @@
 		assertTrue("the jaxws disptach provider class is not generated", generatedClass.exists());
 		
 	}
+	
+	public void testStringTemplate() {
+		JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator();
+		ESBServiceEndpointInfo epInfo = new ESBServiceEndpointInfo("test", "MyTest");
+		try {
+			assertTrue("The arrtibute in template is not repalced correctly", generator.getMethodBody(epInfo).indexOf("MyTest") > -1);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+	}
+	
+	
 
 }




More information about the jboss-svn-commits mailing list