package org.ebayopensource.turmeric.tools.codegen; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Properties; import javax.xml.namespace.NamespaceContext; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Test; import org.w3c.dom.Node; public class ConsumerIDQE2Test extends AbstractServiceGeneratorTestCase{ File destDir = null; File prDir = null; File binDir = null; HashMap<String,String> propertiesFileMap; HashMap<String,String> interfacePropertiesFileMap; NamespaceContextImpl nsc; String testArgs[]; String testArgs1[]; String testArgs2[]; String sharedConsumer; File sharedConsumerClass; @Before public void initialize() throws IOException{ testingdir.ensureEmpty(); destDir = getTestDestDir(); binDir = testingdir.getFile("bin"); prDir = getTestDestDir(); nsc = new NamespaceContextImpl(); File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); propertiesFileMap = new HashMap<String,String>(); interfacePropertiesFileMap = new HashMap<String,String>(); //propertiesFileMap.put("not_generate_base_consumer", "AdminV1"); propertiesFileMap.put("scpp_version", "1.1"); propertiesFileMap.put("client_name","Somename"); interfacePropertiesFileMap.put("service_interface_class_name","org.ebayopensource.test.soaframework.tools.codegen.SimpleServiceInterface"); interfacePropertiesFileMap.put("original_wsdl_uri",wsdl.getAbsolutePath()); interfacePropertiesFileMap.put("service_version","1.0.0"); interfacePropertiesFileMap.put("sipp_version","1.1"); interfacePropertiesFileMap.put("service_layer","COMMON"); interfacePropertiesFileMap.put("admin_name","AdminV1"); interfacePropertiesFileMap.put("envMapper","org.ebayopensource.turmeric.tools.codegen.EnvironmentMapperImpl"); } public List<String> getNodeDetails(NamespaceContext nsc,String exprString,String filePath) throws XPathExpressionException{ List<String> list = new ArrayList<String>(); XPathFactory factory = XPathFactory.newInstance(); // 2. Use the XPathFactory to create a new XPath object XPath xpath = factory.newXPath(); xpath.setNamespaceContext(nsc); // 3. Compile an XPath string into an XPathExpression XPathExpression expression = xpath.compile(exprString); // 4. Evaluate the XPath expression on an input document Node result = (Node)expression.evaluate(new org.xml.sax.InputSource(filePath),XPathConstants.NODE ); if(result != null){ list.add(result.getNodeName()); list.add(result.getTextContent()); } return list; } // generating shared consumer in the post 2.4 interface project from wsdl using 'ServiceFromWSDLIntf with siff_version = 1.0' @Test public void notgeneratingSharedConsumerInIntfProject() throws Exception{ File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs = new String[] { "-servicename","NewService", "-genType", "ServiceMetadataProps", "-wsdl",wsdl.getAbsolutePath(), //"-src", destDir.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-pr",prDir.getAbsolutePath(), "-adminname","AdminV1" }; testArgs1= new String[] { "-servicename","NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-pr",prDir.getAbsolutePath() }; interfacePropertiesFileMap.put("sipp_version", "1.0"); CreateInterfacePropsFile(destDir.getAbsolutePath()+"/service_intf_project.properties"); performDirectCodeGen(testArgs, binDir); performDirectCodeGen(testArgs1, binDir); sharedConsumer = destDir.getAbsolutePath()+"/gen-src/client/org/ebayopensource/turmeric/runtime/types/AdminV1/gen/SharedAdminV1Consumer.java"; sharedConsumerClass = new File(sharedConsumer); assertFalse(sharedConsumerClass.exists()); } // build the interface project and regenerate the Shared consumer @Test public void buildAndRegeneratingSharedConsumerInIntfProject() throws Exception{ File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs = new String[] { "-servicename","NewService", "-genType", "ServiceMetadataProps", "-wsdl",wsdl.getAbsolutePath(), //"-src", destDir.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-pr",prDir.getAbsolutePath(), "-adminname","AdminV1" }; testArgs1 = new String[] { "-servicename","NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-pr",prDir.getAbsolutePath() }; testArgs2 = new String[] { "-servicename","NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-pr",prDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), }; CreateInterfacePropsFile(destDir.getAbsolutePath()+"/service_intf_project.properties"); performDirectCodeGen(testArgs, binDir); performDirectCodeGen(testArgs1, binDir); performDirectCodeGen(testArgs2, binDir); sharedConsumer = destDir.getAbsolutePath()+"/gen-src/client/org/ebayopensource/test/soaframework/tools/codegen/adminv1/gen/SharedAdminV1Consumer.java"; sharedConsumerClass = new File(sharedConsumer); assertTrue(sharedConsumerClass.exists()); assertTrue(FileUtils.readFileToString(sharedConsumerClass).contains("private final static String SVC_ADMIN_NAME = \"AdminV1\";")); assertTrue(FileUtils.readFileToString(sharedConsumerClass).contains("private String m_environment = \"production\";")); assertTrue(FileUtils.readFileToString(sharedConsumerClass).contains("private String m_clientName;")); assertTrue(FileUtils.readFileToString(sharedConsumerClass).contains("private final static EnvironmentMapper s_envMapper = new EnvironmentMapperImpl();")); } // build the interface project and regenerate the Shared consumer - using client no config @Test public void buildAndRegeneratingSharedConsumerInIntfProjectV3() throws Exception{ File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs = new String[] { "-servicename","NewService", "-genType", "ServiceMetadataProps", "-wsdl",wsdl.getAbsolutePath(), //"-src", destDir.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-pr",destDir.getAbsolutePath(), "-adminname","AdminV1" }; testArgs1 = new String[] { "-servicename","NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-pr",prDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), }; testArgs2= new String[] { "-servicename","NewService", "-genType", "ClientNoConfig", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-pr",prDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), }; CreateInterfacePropsFile(destDir.getAbsolutePath()+"/service_intf_project.properties"); performDirectCodeGen(testArgs, binDir); performDirectCodeGen(testArgs1, binDir); performDirectCodeGen(testArgs2, binDir); sharedConsumer = destDir.getAbsolutePath()+"/gen-src/client/org/ebayopensource/test/soaframework/tools/codegen/adminv1/gen/SharedAdminV1Consumer.java"; sharedConsumerClass = new File(sharedConsumer); assertTrue(sharedConsumerClass.exists()); } // build the interface project and regenerate the Shared consumer - using client no config. sipp_version 1.0 @Test public void buildAndRegeneratingSharedConsumerInIntfProjectV3_sipp1_0() throws Exception{ File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs = new String[] { "-servicename","NewService", "-genType", "ServiceMetadataProps", "-wsdl",wsdl.getAbsolutePath(), //"-src", destDir.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-scv", "1.2.3", "-slayer","COMMON", "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-bin", destDir.getAbsolutePath(), "-pr",prDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), "-adminname","AdminV1" }; testArgs1 = new String[] { "-servicename","NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-bin", binDir.getAbsolutePath(), "-pr",prDir.getAbsolutePath() }; testArgs2 = new String[] { "-servicename","NewService", "-genType", "ClientNoConfig", "-wsdl",wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-jdest", destDir.getAbsolutePath()+"/gen-src/client", "-scv", "1.2.3", "-slayer","COMMON", "-pr",prDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), }; interfacePropertiesFileMap.put("sipp_version", "1.0"); CreateInterfacePropsFile(destDir.getAbsolutePath()+"/service_intf_project.properties"); performDirectCodeGen(testArgs, binDir); performDirectCodeGen(testArgs1, binDir); performDirectCodeGen(testArgs2, binDir); sharedConsumer = destDir.getAbsolutePath()+"/gen-src/client/org/ebayopensource/turmeric/runtime/types/adminv1/gen/SharedAdminV1Consumer.java"; sharedConsumerClass = new File(sharedConsumer); assertFalse(sharedConsumerClass.exists()); } private void CreateInterfacePropsFile(String filePath) throws Exception{ File dDir = new File(destDir.getAbsolutePath()); if(!dDir.exists()) dDir.mkdir(); File file = new File(filePath); if(!file.exists()) file.createNewFile(); Properties pro = new Properties(); FileInputStream in = new FileInputStream(file); pro.load(in); pro.setProperty("service_interface_class_name",interfacePropertiesFileMap.get("service_interface_class_name")); pro.setProperty("original_wsdl_uri",interfacePropertiesFileMap.get("original_wsdl_uri")); pro.setProperty("service_version",interfacePropertiesFileMap.get("service_version")); pro.setProperty("sipp_version",interfacePropertiesFileMap.get("sipp_version")); pro.setProperty("service_layer",interfacePropertiesFileMap.get("service_layer")); pro.setProperty("admin_name",interfacePropertiesFileMap.get("admin_name")); pro.setProperty("envMapper",interfacePropertiesFileMap.get("envMapper")); FileOutputStream out =new FileOutputStream(destDir.getAbsolutePath()+"/service_intf_project.properties"); pro.store(out,null); in.close(); } public void deinitialize(){ nsc= null; propertiesFileMap=null; testArgs = null; testArgs1=null; testArgs2=null; sharedConsumer=null; sharedConsumerClass=null; } }