package org.ebayopensource.turmeric.tools.codegen; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.Set; import junit.framework.Assert; import org.ebayopensource.turmeric.tools.codegen.external.WSDLUtil; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.WsdlParserUtil; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import com.ebay.kernel.util.FileUtils; public class ObjectFactorySortOrderTest 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; File intfProperty = null; File objFactory = null; @Before public void initialize() throws Exception{ testingdir.ensureEmpty(); destDir = testingdir.getDir(); binDir = testingdir.getFile("bin"); File objFactFolder = new File(destDir.getAbsolutePath()+"/obFjactory"); if(!objFactFolder.exists()){ objFactFolder.createNewFile(); } try { intfProperty = createPropertyFile(destDir.getAbsolutePath(), INTF_PROPERTIES); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //enter values to property file Properties 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\\ebaySvc.wsdl"); intfProps.put("service_version","1.0.0"); intfProps.put("admin_name","AccountService"); intfProps.put("service_namespace_part","billing"); intfProps.put("domainName","Billing"); fillProperties(intfProps, intfProperty); } @Test public void testObjectFactoryCheckSum() throws Exception { File path = getCodegenQEDataFileInput("AccountService.wsdl"); String [] testArgs = {"-serviceName","AccountService", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-namespace","http://www.ebayopensource.org/marketplace/service", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-jdest",destDir.getAbsolutePath() +"/gen-src/client", "-bin",binDir.getAbsolutePath(), "-scv","1.0.0", "-pr",destDir.getAbsolutePath() }; Set<String> targetNS = WsdlParserUtil.getAllTargetNamespces(path.getAbsolutePath()); List<String> packageList = new ArrayList<String>(); Iterator<String> it = targetNS.iterator(); while(it.hasNext()){ packageList.add(WSDLUtil.getPackageFromNamespace(it.next())); } for(int i=0;i<5;i++){ performDirectCodeGen(testArgs,binDir); File objectFactory = null; for(String pkg:packageList){ String p = pkg.replace(".","/"); objectFactory = new File(destDir.getAbsolutePath()+"/gen-src/client/"+p+ "/ObjectFactory.java"); FileUtils.copyFile(objectFactory.getAbsolutePath(),getObjectFactoryFile(p).getAbsolutePath()); } } for(String pkg:packageList){ String p = pkg.replace(".","/"); File file = new File(destDir.getAbsolutePath()+"/objFactory/"+p); Assert.assertTrue(fileCompare(file)); } } public File getObjectFactoryFile(String pkg){ long time = System.currentTimeMillis(); try { (new File(destDir.getAbsolutePath()+"/objFactory/"+pkg)).mkdirs(); objFactory = new File(destDir.getAbsolutePath()+"/objFactory/"+pkg+"/ObjectFactory"+time+".java"); objFactory.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return objFactory; } public boolean fileCompare(File dir) throws IOException{ boolean compare = true; File file1 = null; File file2 = null; File [] files = dir.listFiles(); int i; for(i=0;i < files.length;i++){ file1 = files[i]; i = i +1; if(i==files.length){ break; } file2 = files[i]; i = i - 1; compare = compareTwoFiles(file1, file2); } return compare; } }