/** * * * <pre> * ibm-ejb-jar-bnd.xmi 파일에 대한 파싱 테스트 * </pre> */ @Test public void testIbmEjbJarBnd() { // 초기화 File file = new File(this.getClass().getResource("/parser/ibm-ejb-jar-bnd.xmi").getFile()); AnalyzeDefinition analyzeDefinition = new AnalyzeDefinition(); PDFMetadataDefinition metadataDefinition = new PDFMetadataDefinition(); ThreadLocalUtil.clearSharedObject(); ThreadLocalUtil.add(ChameleonConstants.PDF_METADATA_DEFINITION, metadataDefinition); try { File jboss = new File(new File(this.getClass().getResource("/parser").getFile()), "jboss.xml"); if (jboss.exists()) { jboss.delete(); } // 테스트 new IbmEjbJarBndXMIParser().parse(file, analyzeDefinition); // 검증 List<EjbRecommend> recommendList = metadataDefinition.getEjbRecommendList(); List<String> transFileList = metadataDefinition.getEjbTransFileList(); assertTrue("recommendList의 크기는 2이어야 합니다.", recommendList.size() == 2); assertTrue("transFileList의 크기는 1이어야 합니다.", transFileList.size() == 1); assertTrue( "첫 번째 transFileList는 \"jboss.xml\"이어야 합니다.", transFileList.get(0).endsWith("jboss.xml")); System.err.println(recommendList.get(0).getContents()); System.err.println(recommendList.get(1).getContents()); // jboss.xml 파일 생섬 결과 검증 jboss = new File(this.getClass().getResource("/parser/jboss.xml").getFile()); assertTrue("jboss.xml 파일이 생성되어 있어야 합니다.", jboss.exists()); jboss.delete(); } catch (Throwable t) { fail("Exception이 발생하면 안됩니다."); } } // end of testIbmEjbJarBnd()
/* (non-Javadoc) * @see com.athena.chameleon.engine.core.analizer.Analyzer#analyze(java.io.File) */ @Override public String analyze(File file) { Assert.notNull("file", "file must not be null."); Assert.isTrue(file.getName().endsWith(".zip"), "file name must be ends with \".zip\"."); String newFileName = null; try { // 임시 디렉토리에 압축 해제 String tempDir = policy.getUnzipDir() + File.separator + System.currentTimeMillis(); ZipUtil.decompress(file.getAbsolutePath(), tempDir); ThreadLocalUtil.add(ChameleonConstants.ZIP_ROOT_DIR, tempDir); // 인코딩 변경 converter.convert(new File(tempDir), analyzeDefinition); // 프로젝트 소스(zip) 입력 시 class 파일에 대한 의존성 검사를 수행하지 않는다. // ClasspathUtil.addPath(tempDir); // 압축 해제 디렉토리 내의 파일을 분석한다. analyze(new File(tempDir), tempDir); // 해당 zip 파일을 xxx-result.zip으로 재 압축한다. newFileName = getResultFile(file); ZipUtil.compress(tempDir, newFileName, ArchiveType.ZIP); // 임시 디렉토리를 삭제한다. deleteDirectory(new File(tempDir)); ThreadLocalUtil.add(ChameleonConstants.ZIP_ROOT_DIR, null); } catch (Exception e) { logger.error("Unahandled Exception has occurred : ", e); } return newFileName; } // end of analyze()