import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import org.apache.tuscany.SourceExplore.ObjectFactory; import org.apache.tuscany.SourceExplore.Package; import org.apache.tuscany.SourceExplore.Projects; import org.apache.tuscany.SourceExplore.Projects2; import org.apache.tuscany.SourceExplore.Projects2.Project; public class HashSPISource { public static void main(String[] args) throws Throwable { ObjectFactory fac = new ObjectFactory(); String sourceRoot = "c:/Dev2/SCA"; String inputXML = "src/main/resources/projects.xml"; JAXBContext jaxbContext = JAXBContext .newInstance("org.apache.tuscany.SourceExplore"); Unmarshaller um = jaxbContext.createUnmarshaller(); File inputFile = new File(inputXML).getAbsoluteFile(); Projects p = (Projects)um.unmarshal(inputFile); List> data = p.getProjectOrPackage(); System.out.println(p); Projects2 p2 = fac.createProjects2(); for (int i = 0; i < data.size(); i++) { Project proj = null; if(!"project".equals(data.get(i).getName().getLocalPart())) { throw new Exception("Expecting a project element " + i); } else { System.out.println("project: " + data.get(i).getValue()); proj = fac.createProjects2Project(); proj.setName(data.get(i).getValue()); p2.getProject().add(proj); } for(i++;i files = pkg.getFile(); if(contents!= null) { for (File file : contents) { if(ofInterest(file)) { org.apache.tuscany.SourceExplore.File f = fac.createFile(); f.setName(file.getPath()); String digest = md5(file); f.setDigest(digest); files.add(f); } System.out.println(file.getName()); } } } private static String md5(File f) { MessageDigest digest = null; try { digest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } InputStream is = null; String output = null; try { is = new FileInputStream(f); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } byte[] buffer = new byte[8192]; int read = 0; try { while( (read = is.read(buffer)) > 0) { digest.update(buffer, 0, read); } byte[] md5sum = digest.digest(); BigInteger bigInt = new BigInteger(1, md5sum); output = bigInt.toString(16); System.out.println("MD5: " + output); } catch(IOException e) { throw new RuntimeException("Unable to process file for MD5", e); } finally { try { is.close(); } catch(IOException e) { throw new RuntimeException("Unable to close input stream for MD5 calculation", e); } } return output; } private static boolean ofInterest(File file) { boolean result = false; if(!result) result = file.getPath().endsWith(".java"); return result; } }