package org.ebayopensource.turmeric.tools.codegen;
import java.io.File;
import java.util.Properties;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
public class ServiceFactoryImplTest extends AbstractServiceGeneratorTestCase {
@Rule public TestName name = new TestName();
File destDir = null;
File binDir = null;
final String INTF_PROPERTIES = "service_intf_project.properties";
final String IMPL_PROPERTIES = "service_impl_project.properties";
ServiceGenerator gen = null;
Properties implProps = new Properties();
File intfProperty = null;
File implProperty = null;
File metaDataProps = null;
Properties intfProps = null;
Properties metaData = null;
@Before
public void init() throws Exception{
testingdir.ensureEmpty();
destDir = testingdir.getDir();
binDir = testingdir.getFile("bin");
intfProperty = createPropertyFile(destDir.getAbsolutePath(), INTF_PROPERTIES);
//enter values to property file
intfProps = new Properties();
intfProps.put("sipp_version","1.1");
intfProps.put("service_interface_class_name","org.ebayopensource.test.soaframework.tools.codegen.AccountService");
intfProps.put("service_layer","COMMON");
intfProps.put("original_wsdl_uri","Vanilla-Codegen\\ServiceInputFiles\\AccountService.wsdl");
intfProps.put("service_version","1.0.0");
intfProps.put("admin_name","AccountService");
intfProps.put("interface_source_type","wsdl");
intfProps.put("service_namespace_part","billing");
intfProps.put("domainName","Billing");
metaData = new Properties();
metaData.put("interface_source_type","interface");
fillProperties(intfProps, intfProperty);
}
/*
* Test current functionality where dispatcher package is derived from the impl package
* present in serviceconfig.xml
*/
@Test
public void testCurrentFunctionality() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","NewService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
File bin = new File(destDir,"bin");
String [] testArgs2 = {"-serviceName","NewService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",bin.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/impl/gen/AccountServiceRequestDispatcher.java");
}
@Test
public void testCurrentFunctionalityWithProperty() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "false");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","NewService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","NewService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/impl/gen/AccountServiceRequestDispatcher.java");
}
/*
* Test functionality where developer has put property "useServiceFactoryImpl = true" and has replaced the impl class tag and
* replaced with factory class tag.
*/
@Test
public void testCase1() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "TruE ");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.removeElementFromXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-class-name");
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
//XmlUtility.addElementToXml(getServiceConfigFile(destDir,"AccountService"),"service-impl-factory","org.ebayopensource.factory.Factory");
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
/*
* Test functionality where developer has put property "useServiceFactoryImpl = true" and has added factory class tag and not removed the
* impl class tag.
*/
@Test
@Ignore("case handled at runtime")
public void testCase2() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", " true ");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-bin",binDir.getAbsolutePath(),
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
/*
* negative case where property useExternalServiceFactory=false and only factory class is present in service config.xml
*/
@Test
public void testCase3() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "false");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.removeElementFromXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-class-name");
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
//XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(),"AccountService"),"service-impl-factory","org.ebayopensource.factory.Factory");
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/impl/gen/AccountServiceRequestDispatcher.java");
}
/*
* negative case where property useExternalServiceFactory=true and only factory class is present in service config.xml
*/
@Test
public void testCase4() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "true");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
@Test
@Ignore("handled the case in runtime")
public void testCase5() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", " false ");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
/*
* negative case where property useExternalServiceFactory= [value other than true or false] and only factory class is present in service config.xml
*/
@Test
public void testCase6() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "sadsa");
fillProperties(implProps, implProperty);
File path = getCodegenQEDataFileInput("AccountService.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.removeElementFromXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-class-name");
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
//XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(),"AccountService"),"service-impl-factory","org.ebayopensource.factory.Factory");
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","dispatcher",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/impl/gen/AccountServiceRequestDispatcher.java");
}
/*
* case where property useExternalServiceFactory=true and only factory class is present in service config.xml
* for dispatcher pre build.
*/
@Test
public void testCase7() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "TruE ");
fillProperties(implProps, implProperty);
fillProperties(intfProps, intfProperty);
File path = getCodegenQEDataFileInput("AccountService1.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.removeElementFromXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-class-name");
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
//XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(),"AccountService"),"service-impl-factory","org.ebayopensource.factory.Factory");
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","DispatcherForBuild",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
/*
* case where property useExternalServiceFactory=true and only factory class is present in service config.xml
* for dispatcher maven pre build.
*/
@Test
public void testCase8() throws Exception{
implProperty = createPropertyFile(destDir.getAbsolutePath(), IMPL_PROPERTIES);
implProps.put("useExternalServiceFactory", "TruE ");
fillProperties(implProps, implProperty);
fillProperties(intfProps, intfProperty);
File path = getCodegenQEDataFileInput("AccountService1.wsdl");
String [] testArgs1 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLIntf",
"-wsdl",path.getAbsolutePath(),
"-gip","org.ebayopensource.test.soaframework.tools.codegen",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
String [] testArgs2 = {"-serviceName","AccountService",
"-genType","ServiceFromWSDLImpl",
"-wsdl",path.getAbsolutePath(),
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-src",destDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
String [] testArgs4 = {"-serviceName","AccountService",
"-genType","ServerConfig",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-bin",binDir.getAbsolutePath(),
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs1,binDir);
performDirectCodeGen(testArgs2,binDir);
performDirectCodeGen(testArgs4,binDir);
XmlUtility.removeElementFromXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-class-name");
XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(), "AccountService"), "service-impl-factory","org.ebayopensource.factory.Factory");
ensureClean(new File(destDir.getAbsolutePath(),"gen-src/service").getAbsolutePath());
//XmlUtility.addElementToXml(getServiceConfigFile(destDir.getAbsolutePath(),"AccountService"),"service-impl-factory","org.ebayopensource.factory.Factory");
String [] testArgs3 = {"-serviceName","AccountService",
"-genType","DispatcherForMaven",
"-interface","org.ebayopensource.test.soaframework.tools.codegen.AccountService",
"-sicn","org.ebayopensource.test.soaframework.tools.codegen.impl.AccountServiceImpl",
"-dest",destDir.getAbsolutePath(),
"-src",destDir.getAbsolutePath(),
"-jdest",destDir.getAbsolutePath() + "/gen-src/service",
"-slayer","INTERMEDIATE",
"-scv","1.0.0",
"-bin",binDir.getAbsolutePath(),
"-pr",destDir.getAbsolutePath()};
performDirectCodeGen(testArgs3,binDir);
codegenAssertFileExists(destDir.getAbsolutePath(),"gen-src/service/org/ebayopensource/test/soaframework/tools/codegen/gen/AccountServiceRequestDispatcher.java");
}
public void codegenAssertFileExists(String destDir,String path){
File file = new File(destDir+File.separator+path);
Assert.assertTrue("file " + path+ "does not exist in directory" + destDir, file.exists());
}
public String getServiceConfigFile(String destDir,String serviceName){
return destDir + File.separator +"gen-meta-src/META-INF/soa/services/config/"+serviceName+"/ServiceConfig.xml";
}
public void ensureClean(String dir){
File testDir = new File(dir);
if(testDir.isDirectory()){
File [] fileList = testDir.listFiles();
for(File file:fileList){
if(file.isDirectory()){
ensureClean(file.getAbsolutePath());
file.delete();
}
file.delete();
}
}
}
}