Lines 19-31
Link Here
|
19 |
import java.io.StringWriter; |
19 |
import java.io.StringWriter; |
20 |
import java.nio.charset.Charset; |
20 |
import java.nio.charset.Charset; |
21 |
import java.util.ArrayList; |
21 |
import java.util.ArrayList; |
|
|
22 |
import java.util.HashSet; |
23 |
import java.util.Iterator; |
22 |
import java.util.List; |
24 |
import java.util.List; |
23 |
import java.util.Locale; |
25 |
import java.util.Locale; |
24 |
import java.util.ServiceLoader; |
26 |
import java.util.ServiceLoader; |
|
|
27 |
import java.util.Set; |
25 |
|
28 |
|
26 |
import javax.tools.FileObject; |
29 |
import javax.tools.FileObject; |
27 |
import javax.tools.ForwardingJavaFileManager; |
30 |
import javax.tools.ForwardingJavaFileManager; |
28 |
import javax.tools.JavaCompiler; |
31 |
import javax.tools.JavaCompiler; |
|
|
32 |
import javax.tools.JavaFileManager; |
29 |
import javax.tools.JavaFileObject; |
33 |
import javax.tools.JavaFileObject; |
30 |
import javax.tools.StandardJavaFileManager; |
34 |
import javax.tools.StandardJavaFileManager; |
31 |
import javax.tools.StandardLocation; |
35 |
import javax.tools.StandardLocation; |
Lines 51-56
Link Here
|
51 |
public static TestSuite suite() { |
55 |
public static TestSuite suite() { |
52 |
TestSuite suite = new TestSuite(); |
56 |
TestSuite suite = new TestSuite(); |
53 |
suite.addTest(new CompilerToolTests("testInitializeJavaCompiler")); |
57 |
suite.addTest(new CompilerToolTests("testInitializeJavaCompiler")); |
|
|
58 |
suite.addTest(new CompilerToolTests("testFileManager")); |
59 |
suite.addTest(new CompilerToolTests("testFileManager2")); |
54 |
suite.addTest(new CompilerToolTests("testCheckOptions")); |
60 |
suite.addTest(new CompilerToolTests("testCheckOptions")); |
55 |
suite.addTest(new CompilerToolTests("testCompilerOneClassWithSystemCompiler")); |
61 |
suite.addTest(new CompilerToolTests("testCompilerOneClassWithSystemCompiler")); |
56 |
// suite.addTest(new CompilerToolTests("testCompilerOneClassWithSystemCompiler2")); |
62 |
// suite.addTest(new CompilerToolTests("testCompilerOneClassWithSystemCompiler2")); |
Lines 682-687
Link Here
|
682 |
assertTrue("delete failed", inputFile.delete()); |
688 |
assertTrue("delete failed", inputFile.delete()); |
683 |
} |
689 |
} |
684 |
|
690 |
|
|
|
691 |
public void testFileManager() { |
692 |
String tmpFolder = System.getProperty("java.io.tmpdir"); |
693 |
File dir = new File(tmpFolder, "src" + System.currentTimeMillis()); |
694 |
dir.mkdirs(); |
695 |
File inputFile = new File(dir, "X.java"); |
696 |
BufferedWriter writer = null; |
697 |
try { |
698 |
writer = new BufferedWriter(new FileWriter(inputFile)); |
699 |
writer.write("public class X {}"); |
700 |
writer.flush(); |
701 |
writer.close(); |
702 |
} catch (IOException e) { |
703 |
// ignore |
704 |
} finally { |
705 |
if (writer != null) { |
706 |
try { |
707 |
writer.close(); |
708 |
} catch (IOException e) { |
709 |
// ignore |
710 |
} |
711 |
} |
712 |
} |
713 |
try { |
714 |
//JavaCompiler systemCompiler = ToolProvider.getSystemJavaCompiler(); |
715 |
StandardJavaFileManager fileManager = Compiler.getStandardFileManager(null, Locale.getDefault(), Charset.defaultCharset()); |
716 |
|
717 |
List<File> fins = new ArrayList<File>(); |
718 |
fins.add(dir); |
719 |
|
720 |
JavaFileManager.Location sourceLoc = javax.tools.StandardLocation.SOURCE_PATH; |
721 |
fileManager.setLocation(sourceLoc, fins); |
722 |
|
723 |
Set<JavaFileObject.Kind> fileTypes = new HashSet<JavaFileObject.Kind>(); |
724 |
fileTypes.add(JavaFileObject.Kind.SOURCE); |
725 |
|
726 |
Iterable<? extends JavaFileObject> compilationUnits = fileManager.list(sourceLoc, "", fileTypes, true); |
727 |
|
728 |
Iterator<? extends JavaFileObject> it = compilationUnits.iterator(); |
729 |
StringBuilder builder = new StringBuilder(); |
730 |
while (it.hasNext()) { |
731 |
JavaFileObject next = it.next(); |
732 |
String name = next.getName(); |
733 |
name = name.replace('\\', '/'); |
734 |
int lastIndexOf = name.lastIndexOf('/'); |
735 |
builder.append(name.substring(lastIndexOf + 1)); |
736 |
} |
737 |
assertEquals("Wrong contents", "X.java", String.valueOf(builder)); |
738 |
} catch (IOException e) { |
739 |
e.printStackTrace(); |
740 |
} |
741 |
// check that the .class file exist for X |
742 |
assertTrue("delete failed", inputFile.delete()); |
743 |
assertTrue("delete failed", dir.delete()); |
744 |
} |
745 |
public void testFileManager2() { |
746 |
String tmpFolder = System.getProperty("java.io.tmpdir"); |
747 |
File dir = new File(tmpFolder, "src" + System.currentTimeMillis()); |
748 |
dir.mkdirs(); |
749 |
File dir2 = new File(dir, "src2"); |
750 |
dir2.mkdirs(); |
751 |
File inputFile = new File(dir, "X.java"); |
752 |
BufferedWriter writer = null; |
753 |
try { |
754 |
writer = new BufferedWriter(new FileWriter(inputFile)); |
755 |
writer.write("public class X {}"); |
756 |
writer.flush(); |
757 |
writer.close(); |
758 |
} catch (IOException e) { |
759 |
// ignore |
760 |
} finally { |
761 |
if (writer != null) { |
762 |
try { |
763 |
writer.close(); |
764 |
} catch (IOException e) { |
765 |
// ignore |
766 |
} |
767 |
} |
768 |
} |
769 |
File inputFile2 = new File(dir2, "X2.java"); |
770 |
writer = null; |
771 |
try { |
772 |
writer = new BufferedWriter(new FileWriter(inputFile2)); |
773 |
writer.write("public class X2 {}"); |
774 |
writer.flush(); |
775 |
writer.close(); |
776 |
} catch (IOException e) { |
777 |
// ignore |
778 |
} finally { |
779 |
if (writer != null) { |
780 |
try { |
781 |
writer.close(); |
782 |
} catch (IOException e) { |
783 |
// ignore |
784 |
} |
785 |
} |
786 |
} |
787 |
try { |
788 |
//JavaCompiler systemCompiler = ToolProvider.getSystemJavaCompiler(); |
789 |
StandardJavaFileManager fileManager = Compiler.getStandardFileManager(null, Locale.getDefault(), Charset.defaultCharset()); |
790 |
|
791 |
List<File> fins = new ArrayList<File>(); |
792 |
fins.add(dir); |
793 |
|
794 |
JavaFileManager.Location sourceLoc = javax.tools.StandardLocation.SOURCE_PATH; |
795 |
fileManager.setLocation(sourceLoc, fins); |
796 |
|
797 |
Set<JavaFileObject.Kind> fileTypes = new HashSet<JavaFileObject.Kind>(); |
798 |
fileTypes.add(JavaFileObject.Kind.SOURCE); |
799 |
|
800 |
Iterable<? extends JavaFileObject> compilationUnits = fileManager.list(sourceLoc, "", fileTypes, true); |
801 |
|
802 |
Iterator<? extends JavaFileObject> it = compilationUnits.iterator(); |
803 |
StringBuilder builder = new StringBuilder(); |
804 |
while (it.hasNext()) { |
805 |
JavaFileObject next = it.next(); |
806 |
String name = next.getName(); |
807 |
name = name.replace('\\', '/'); |
808 |
int lastIndexOf = name.lastIndexOf('/'); |
809 |
builder.append(name.substring(lastIndexOf + 1)); |
810 |
} |
811 |
assertEquals("Wrong contents", "X2.javaX.java", String.valueOf(builder)); |
812 |
} catch (IOException e) { |
813 |
e.printStackTrace(); |
814 |
} |
815 |
// check that the .class file exist for X |
816 |
assertTrue("delete failed", inputFile2.delete()); |
817 |
assertTrue("delete failed", dir2.delete()); |
818 |
assertTrue("delete failed", inputFile.delete()); |
819 |
assertTrue("delete failed", dir.delete()); |
820 |
} |
685 |
/* |
821 |
/* |
686 |
* Clean up the compiler |
822 |
* Clean up the compiler |
687 |
*/ |
823 |
*/ |