package org.drools.compiler; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Properties; import junit.framework.TestCase; import org.drools.RuleBase; import org.drools.agent.RuleAgent; public class SourcePackageProviderTest extends TestCase { public void testSourceProvider() throws Exception { new SourcePackageProvider(); File dir = getTempDirectory(); InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("/org/drools/integrationtests/HelloWorld.drl")); assertNotNull(reader); File target = new File(dir, "Something.drl"); OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(target)); BufferedReader in = new BufferedReader(reader); BufferedWriter out = new BufferedWriter(writer); String str; while ((str = in.readLine()) != null) { out.write(str + "\n"); } in.close(); out.flush(); out.close(); Properties config = new Properties(); config.setProperty(RuleAgent.FILES, target.getPath()); RuleAgent ag = RuleAgent.newRuleAgent(config); RuleBase rb = ag.getRuleBase(); assertNotNull(rb); } public static File getTempDirectory() { File f = tempDir(); if (f.exists()) { if (f.isFile()) { throw new IllegalStateException("The temp directory exists as a file. Nuke it now !"); } deleteDir( f ); f.mkdir(); } else { f.mkdir(); } return f; } private static File tempDir() { File tmp = new File(System.getProperty( "java.io.tmpdir" )); return new File(tmp, "__temp_test_drools_packages"); } public static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); for (int i=0; i<children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { //throw new RuntimeException("Unable to delete !"); return false; } } } // The directory is now empty so delete it return dir.delete(); } }