1 19 24 25 package org.netbeans.jmi.javamodel.regenerator; 26 27 import java.io.File ; 28 import java.io.IOException ; 29 import java.util.Iterator ; 30 import junit.framework.AssertionFailedError; 31 import org.netbeans.jmi.javamodel.JavaModelPackage; 32 import org.netbeans.jmi.javamodel.Resource; 33 import org.netbeans.jmi.javamodel.codegen.Utility; 34 import org.netbeans.jmi.javamodel.codegen.Utility; 35 import org.netbeans.junit.diff.Diff; 36 import org.netbeans.modules.javacore.internalapi.JavaMetamodel; 37 import org.openide.filesystems.FileSystem; 38 import org.openide.filesystems.FileUtil; 39 40 44 public class Regenerator { 45 46 49 private FileSystem sourceFileSystem; 50 51 54 private FileSystem targetFileSystem; 55 56 private Cloner cloner; 57 58 59 public Regenerator() { 60 } 61 62 66 public FileSystem getSourceFileSystem() { 67 return this.sourceFileSystem; 68 } 69 70 74 public void setSourceFileSystem(FileSystem sourceFileSystem) { 75 this.sourceFileSystem = sourceFileSystem; 76 } 77 78 82 public FileSystem getTargetFileSystem() { 83 return this.targetFileSystem; 84 } 85 86 90 public void setTargetFileSystem(FileSystem targetFileSystem) { 91 this.targetFileSystem = targetFileSystem; 92 cloner = new Cloner(targetFileSystem); 93 } 94 95 public void regenerate(String resourceName) { 96 regenerate(JavaMetamodel.getManager().getResource(sourceFileSystem.getRoot(), resourceName)); 97 } 98 99 public void regenerate(Resource resource) { 100 Resource result; 101 Utility.beginTrans(true); 102 try { 103 result = cloner.duplicate(resource); 104 } finally { 105 Utility.endTrans(false); 106 } 107 Diff diff = new LexDiff(); 108 File sourceFile = FileUtil.toFile(JavaMetamodel.getManager().getFileObject(resource)); 109 File targetFile = FileUtil.toFile(JavaMetamodel.getManager().getFileObject(result)); 110 try { 111 if ( diff.diff(sourceFile, targetFile, null)) { 112 throw new AssertionFailedError("Test Failed !!! " + sourceFile.getName() + " differs from " + targetFile.getName()); 113 } else { 114 System.out.println("Test Passed !!! " + sourceFile.getName()); 115 } 116 } catch (IOException ioe) { 117 ioe.printStackTrace(); 118 } 119 } 120 121 public void regenerateAll() { 122 System.out.println("regenerate all"); 123 JavaModelPackage source = JavaMetamodel.getManager().resolveJavaExtent(sourceFileSystem.getRoot()); 124 for(Iterator it = source.getResource().refAllOfClass().iterator(); it.hasNext(); regenerate((Resource) it.next())); 125 } 126 } 127 | Popular Tags |