[jboss-svn-commits] JBL Code SVN: r25300 - in labs/jbossrules/trunk: drools-ant/src/test/java/org/drools/contrib and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 17 04:04:14 EST 2009
Author: Rikkola
Date: 2009-02-17 04:04:14 -0500 (Tue, 17 Feb 2009)
New Revision: 25300
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java
Modified:
labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java
labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java
labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleBaseAssemblerTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java
Log:
-Made KnowledgePackageImp externalizable
-Rule agent and ant task working with knowledge packages and bases
-JBRULES-1911: package compiled by the drools-ant task cannot be used by KnowledgeBuilder nor old RuleAgent
Modified: labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -16,33 +16,55 @@
package org.drools.contrib;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collection;
+
import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.RuntimeDroolsException;
-import org.drools.guvnor.client.modeldriven.brl.RuleModel;
-import org.drools.guvnor.server.util.BRDRLPersistence;
-import org.drools.guvnor.server.util.BRXMLPersistence;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.definition.KnowledgePackage;
+import org.drools.guvnor.client.modeldriven.brl.RuleModel;
+import org.drools.guvnor.server.util.BRDRLPersistence;
+import org.drools.guvnor.server.util.BRXMLPersistence;
+import org.drools.io.ResourceFactory;
import org.drools.lang.Expander;
import org.drools.lang.dsl.DSLMappingFile;
import org.drools.lang.dsl.DSLTokenizedMappingFile;
import org.drools.lang.dsl.DefaultExpander;
import org.drools.lang.dsl.DefaultExpanderResolver;
-import org.drools.rule.Package;
+import org.drools.util.DroolsStreamUtils;
-import java.io.*;
-
/**
* An ant task to allow rulebase compilation and serialization during a build.
*
@@ -50,339 +72,482 @@
*/
public class DroolsCompilerAntTask extends MatchingTask {
- public static String BRLFILEEXTENSION = ".brl";
- public static String XMLFILEEXTENSION = ".xml";
- public static String RULEFLOWFILEEXTENSION = ".rfm";
- public static String DSLFILEEXTENSION = ".dslr";
- public static String XLSFILEEXTENSION = ".xls";
-
- public static String PACKAGEBINFORMAT = "package";
+ public static String BRLFILEEXTENSION = ".brl";
+ public static String XMLFILEEXTENSION = ".xml";
+ public static String RULEFLOWFILEEXTENSION = ".rfm";
+ public static String DSLFILEEXTENSION = ".dsl";
+ public static String DSLRFILEEXTENSION = ".dslr";
+ public static String XLSFILEEXTENSION = ".xls";
- private File srcdir;
- private File toFile;
- private Path classpath;
-
- private String binformat;
+ public static String PACKAGEBINFORMAT = "package";
+ public static String PACKAGEBINTYPE = "knowledge";
-
- /**
- * Source directory to read DRL files from
- *
- * @param directory
- */
- public void setSrcDir(File directory) {
- this.srcdir = directory;
- }
+ private File srcdir;
+ private File toFile;
+ private Path classpath;
- /**
- * File to serialize the rulebase to
- *
- * @param toFile
- */
- public void setToFile(File toFile) {
- this.toFile = toFile;
- }
+ private String binformat;
+ private String bintype;
- /**
- * The classpath to use when compiling the rulebase
- *
- * @param classpath
- */
- public void setClasspath(Path classpath) {
- createClasspath().append(classpath);
- }
+ /**
+ * Source directory to read DRL files from
+ *
+ * @param directory
+ */
+ public void setSrcDir(File directory) {
+ this.srcdir = directory;
+ }
- /**
- * Classpath to use, by reference, when compiling the rulebase
- *
- * @param a reference to an existing classpath
- */
- public void setClasspathref(Reference r) {
- createClasspath().setRefid(r);
- }
+ /**
+ * File to serialize the rulebase to
+ *
+ * @param toFile
+ */
+ public void setToFile(File toFile) {
+ this.toFile = toFile;
+ }
- /**
- * Adds a path to the classpath.
- *
- * @return created classpath
- */
- public Path createClasspath() {
- if (this.classpath == null) {
- this.classpath = new Path(getProject());
- }
- return this.classpath.createPath();
- }
+ /**
+ * The classpath to use when compiling the rulebase
+ *
+ * @param classpath
+ */
+ public void setClasspath(Path classpath) {
+ createClasspath().append( classpath );
+ }
- /**
- * Task's main method
- */
- public void execute() throws BuildException {
- super.execute();
+ /**
+ * Classpath to use, by reference, when compiling the rulebase
+ *
+ * @param a
+ * reference to an existing classpath
+ */
+ public void setClasspathref(Reference r) {
+ createClasspath().setRefid( r );
+ }
- // checking parameters are set
- if (toFile == null) {
- throw new BuildException(
- "Destination rulebase file does not specified.");
- }
+ /**
+ * Adds a path to the classpath.
+ *
+ * @return created classpath
+ */
+ public Path createClasspath() {
+ if ( this.classpath == null ) {
+ this.classpath = new Path( getProject() );
+ }
+ return this.classpath.createPath();
+ }
- // checking parameters are set
- if (srcdir == null) {
- throw new BuildException("Source directory not specified.");
- }
+ /**
+ * Task's main method
+ */
+ public void execute() throws BuildException {
+ super.execute();
- if (!srcdir.exists()) {
- throw new BuildException("Source directory does not exists."
- + srcdir.getAbsolutePath());
- }
+ // checking parameters are set
+ if ( toFile == null ) {
+ throw new BuildException( "Destination rulebase file does not specified." );
+ }
- AntClassLoader loader = null;
- try {
- // create a specialized classloader
- loader = getClassLoader();
+ // checking parameters are set
+ if ( srcdir == null ) {
+ throw new BuildException( "Source directory not specified." );
+ }
- // create a package builder configured to use the given classloader
- PackageBuilder builder = getPackageBuilder(loader);
+ if ( !srcdir.exists() ) {
+ throw new BuildException( "Source directory does not exists." + srcdir.getAbsolutePath() );
+ }
- // get the list of files to be added to the rulebase
- String[] fileNames = getFileList();
+ AntClassLoader loader = null;
+ try {
+ // create a specialized classloader
+ loader = getClassLoader();
- for (int i = 0; i < fileNames.length; i++) {
- // compile rule file and add to the builder
- compileAndAddFile(builder, fileNames[i]);
- }
-
- if ( builder.hasErrors() ) {
- System.err.println( builder.getErrors().toString() );
- }
+ if ( PACKAGEBINTYPE.equals( bintype ) ) {
+ createWithKnowledgeBuilder( loader );
+ } else {
+ createWithPackageBuilder( loader );
+ }
+ } catch ( Exception e ) {
+ throw new BuildException( "RuleBaseTask failed: " + e.getMessage(),
+ e );
+ } finally {
+ if ( loader != null ) {
+ loader.resetThreadContextLoader();
+ }
+ }
+ }
- // gets the package
- org.drools.rule.Package pkg = builder.getPackage();
-
- // creates the rulebase
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ private void createWithKnowledgeBuilder(AntClassLoader loader) throws FileNotFoundException,
+ DroolsParserException,
+ IOException {
+ // create a package builder configured to use the given classloader
+ KnowledgeBuilder kbuilder = getKnowledgeBuilder( loader );
- // adds the package
- ruleBase.addPackage(pkg);
-
-
- if (PACKAGEBINFORMAT.equals( binformat ) ) {
- serializeObject( pkg );
- } else {
- // serialize the rule base to the destination file
- serializeObject(ruleBase);
- }
- } catch (Exception e) {
- throw new BuildException("RuleBaseTask failed: " + e.getMessage(),
- e);
- } finally {
- if (loader != null) {
- loader.resetThreadContextLoader();
- }
- }
- }
-
- /**
- * @param ruleBase
- * @throws FileNotFoundException
- * @throws IOException
- */
- private void serializeObject(Object object)
- throws FileNotFoundException, IOException {
- ObjectOutputStream outstream = null;
- try {
- FileOutputStream fout = new FileOutputStream(toFile);
- outstream = new ObjectOutputStream(fout);
- outstream.writeObject(object);
- } finally {
- if (outstream != null) {
- outstream.close();
- }
- }
- }
+ // get the list of files to be added to the rulebase
+ String[] fileNames = getFileList();
- /**
- * @param builder
- * @param fileName
- * @return
- * @throws FileNotFoundException
- * @throws DroolsParserException
- * @throws IOException
- */
- private void compileAndAddFile(PackageBuilder builder, String fileName)
- throws FileNotFoundException, DroolsParserException, IOException {
- InputStreamReader instream = null;
- File file = new File(this.srcdir, fileName);
+ for ( int i = 0; i < fileNames.length; i++ ) {
+ // compile rule file and add to the builder
+ compileAndAddFile( kbuilder,
+ fileNames[i] );
+ }
+ if ( kbuilder.hasErrors() ) {
+ System.err.println( kbuilder.getErrors().toString() );
+ }
+
+ // gets the packages
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ // creates the knowledge base
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+ // adds the packages
+ kbase.addKnowledgePackages( pkgs );
+
+ if ( PACKAGEBINFORMAT.equals( binformat ) ) {
+ serializeObject( pkgs.iterator().next() );
+ } else {
+ // serialize the knowledge base to the destination file
+ serializeObject( kbase );
+ }
+ }
+
+ private void createWithPackageBuilder(AntClassLoader loader) throws FileNotFoundException,
+ DroolsParserException,
+ IOException {
+ // create a package builder configured to use the given classloader
+ PackageBuilder builder = getPackageBuilder( loader );
+
+ // get the list of files to be added to the rulebase
+ String[] fileNames = getFileList();
+
+ for ( int i = 0; i < fileNames.length; i++ ) {
+ // compile rule file and add to the builder
+ compileAndAddFile( builder,
+ fileNames[i] );
+ }
+
+ if ( builder.hasErrors() ) {
+ System.err.println( builder.getErrors().toString() );
+ }
+
+ // gets the package
+ org.drools.rule.Package pkg = builder.getPackage();
+
+ // creates the rulebase
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+ // adds the package
+ ruleBase.addPackage( pkg );
+
+ if ( PACKAGEBINFORMAT.equals( binformat ) ) {
+ serializeObject( pkg );
+ } else {
+ // serialize the rule base to the destination file
+ serializeObject( ruleBase );
+ }
+ }
+
+ /**
+ * @param ruleBase
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ private void serializeObject(Object object) throws FileNotFoundException,
+ IOException {
+ FileOutputStream fout = null;
try {
+ fout = new FileOutputStream( toFile );
+ DroolsStreamUtils.streamOut( fout,
+ object );
+ } finally {
+ if ( fout != null ) {
+ fout.close();
+ }
+ }
+ }
- if (fileName.endsWith(DroolsCompilerAntTask.BRLFILEEXTENSION)) {
+ /**
+ * @param builder
+ * @param fileName
+ * @return
+ * @throws FileNotFoundException
+ * @throws DroolsParserException
+ * @throws IOException
+ */
+ private void compileAndAddFile(KnowledgeBuilder kbuilder,
+ String fileName) throws FileNotFoundException,
+ DroolsParserException,
+ IOException {
- RuleModel model = BRXMLPersistence.getInstance().unmarshal(
- loadResource(fileName));
- String packagefile = loadResource(resolvePackageFile(this.srcdir
- .getAbsolutePath()));
- model.name = fileName.replace(DroolsCompilerAntTask.BRLFILEEXTENSION,
- "");
- ByteArrayInputStream istream = new ByteArrayInputStream(
- (packagefile + BRDRLPersistence.getInstance().marshal(
- model)).getBytes());
- instream = new InputStreamReader(istream);
+ FileReader fileReader = new FileReader( new File( this.srcdir,
+ fileName ) );
- } else {
- instream = new InputStreamReader(new FileInputStream(file));
- }
-
- if (fileName.endsWith(DroolsCompilerAntTask.RULEFLOWFILEEXTENSION)) {
- builder.addRuleFlow(instream);
- } else if (fileName.endsWith(DroolsCompilerAntTask.XMLFILEEXTENSION)) {
- builder.addPackageFromXml(instream);
- } else if (fileName.endsWith(DroolsCompilerAntTask.XLSFILEEXTENSION)) {
+ if ( fileName.endsWith( DroolsCompilerAntTask.BRLFILEEXTENSION ) ) {
+ // TODO: Right now I have to first change this to String. Change to
+ // use KnowledgeBuilder directly when the support for that is done.
+ // -Toni Rikkola-
+
+ RuleModel model = BRXMLPersistence.getInstance().unmarshal( loadResource( fileName ) );
+ String packagefile = loadResource( resolvePackageFile( this.srcdir.getAbsolutePath() ) );
+ model.name = fileName.replace( DroolsCompilerAntTask.BRLFILEEXTENSION,
+ "" );
+ ByteArrayInputStream istream = new ByteArrayInputStream( (packagefile + BRDRLPersistence.getInstance().marshal( model )).getBytes() );
+
+ Reader instream = new InputStreamReader( istream );
+
+ kbuilder.add( ResourceFactory.newReaderResource( instream ),
+ ResourceType.DRL );
+
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.RULEFLOWFILEEXTENSION ) ) {
+
+ kbuilder.add( ResourceFactory.newReaderResource( fileReader ),
+ ResourceType.DRF );
+
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.XMLFILEEXTENSION ) ) {
+ kbuilder.add( ResourceFactory.newReaderResource( fileReader ),
+ ResourceType.XDRL );
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.XLSFILEEXTENSION ) ) {
+
+ DecisionTableConfiguration dtableconfiguration = KnowledgeBuilderFactory.newDecisionTableConfiguration();
+ dtableconfiguration.setInputType( DecisionTableInputType.XLS );
+
+ kbuilder.add( ResourceFactory.newReaderResource( fileReader ),
+ ResourceType.DTABLE,
+ dtableconfiguration );
+
+ // } else if
+ // (fileName.endsWith(DroolsCompilerAntTask.DSLFILEEXTENSION)) {
+ //
+ // kbuilder.add(ResourceFactory.newReaderResource(fileReader),
+ // ResourceType.DSL);
+
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.DSLRFILEEXTENSION ) ) {
+
+ // Get the DSL too.
+ String[] dsls = resolveDSLFilesToArray();
+ for ( int i = 0; i < dsls.length; i++ ) {
+ kbuilder.add( ResourceFactory.newFileResource( new File( this.srcdir,
+ dsls[i] ) ),
+ ResourceType.DSL );
+ }
+
+ kbuilder.add( ResourceFactory.newReaderResource( fileReader ),
+ ResourceType.DSLR );
+
+ } else {
+ kbuilder.add( ResourceFactory.newReaderResource( fileReader ),
+ ResourceType.DRL );
+ }
+ }
+
+ /**
+ * @param builder
+ * @param fileName
+ * @return
+ * @throws FileNotFoundException
+ * @throws DroolsParserException
+ * @throws IOException
+ */
+ private void compileAndAddFile(PackageBuilder builder,
+ String fileName) throws FileNotFoundException,
+ DroolsParserException,
+ IOException {
+ InputStreamReader instream = null;
+ File file = new File( this.srcdir,
+ fileName );
+
+ try {
+
+ if ( fileName.endsWith( DroolsCompilerAntTask.BRLFILEEXTENSION ) ) {
+
+ RuleModel model = BRXMLPersistence.getInstance().unmarshal( loadResource( fileName ) );
+ String packagefile = loadResource( resolvePackageFile( this.srcdir.getAbsolutePath() ) );
+ model.name = fileName.replace( DroolsCompilerAntTask.BRLFILEEXTENSION,
+ "" );
+ ByteArrayInputStream istream = new ByteArrayInputStream( (packagefile + BRDRLPersistence.getInstance().marshal( model )).getBytes() );
+ instream = new InputStreamReader( istream );
+
+ } else {
+ instream = new InputStreamReader( new FileInputStream( file ) );
+ }
+
+ if ( fileName.endsWith( DroolsCompilerAntTask.RULEFLOWFILEEXTENSION ) ) {
+ builder.addRuleFlow( instream );
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.XMLFILEEXTENSION ) ) {
+ builder.addPackageFromXml( instream );
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.XLSFILEEXTENSION ) ) {
+
final SpreadsheetCompiler converter = new SpreadsheetCompiler();
- final String drl = converter.compile( new FileInputStream(file),
+ final String drl = converter.compile( new FileInputStream( file ),
InputType.XLS );
+ System.out.println( drl );
- System.out.println(drl);
+ builder.addPackageFromDrl( new StringReader( drl ) );
- builder.addPackageFromDrl(new StringReader(drl));
+ } else if ( fileName.endsWith( DroolsCompilerAntTask.DSLRFILEEXTENSION ) ) {
+ DrlParser parser = new DrlParser();
+ String expandedDRL = parser.getExpandedDRL( loadResource( fileName ),
+ resolveDSLFiles() );
+ builder.addPackageFromDrl( new StringReader( expandedDRL ) );
+ } else {
+ builder.addPackageFromDrl( instream );
+ }
+ } finally {
+ if ( instream != null ) {
+ instream.close();
+ }
+ }
+ }
- } else if (fileName.endsWith(DroolsCompilerAntTask.DSLFILEEXTENSION)) {
- DrlParser parser = new DrlParser();
- String expandedDRL = parser.getExpandedDRL(
- loadResource(fileName), resolveDSLFiles());
- builder.addPackageFromDrl(new StringReader(expandedDRL));
- } else {
- builder.addPackageFromDrl(instream);
- }
- } finally {
- if (instream != null) {
- instream.close();
- }
- }
- }
+ private String[] resolveDSLFilesToArray() {
- private DefaultExpanderResolver resolveDSLFiles() throws IOException {
+ Collection<String> list = new ArrayList<String>();
- DefaultExpanderResolver resolver = new DefaultExpanderResolver();
- final File dir = new File(this.srcdir.getAbsolutePath());
- DSLMappingFile file = new DSLTokenizedMappingFile();
+ final File dir = new File( this.srcdir.getAbsolutePath() );
- FilenameFilter filter = new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.endsWith(".dsl");
- }
- };
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir,
+ String name) {
+ return name.endsWith( ".dsl" );
+ }
+ };
- String[] children = dir.list(filter);
- if (children.length == 0) {
- throw new BuildException(
- "There are no DSL files for this directory:"
- + this.srcdir.getAbsolutePath());
- }
+ return dir.list( filter );
+ }
- for (int index = 0; index < children.length; index++) {
- if (file.parseAndLoad(new StringReader(loadResource(children[index])))) {
- final Expander expander = new DefaultExpander();
- expander.addDSLMapping(file.getMapping());
- resolver.addExpander("*", expander);
- } else {
- throw new RuntimeDroolsException(
- "Error parsing and loading DSL file."
- + file.getErrors());
- }
- }
+ private DefaultExpanderResolver resolveDSLFiles() throws IOException {
- return resolver;
- }
+ DefaultExpanderResolver resolver = new DefaultExpanderResolver();
+ final File dir = new File( this.srcdir.getAbsolutePath() );
+ DSLMappingFile file = new DSLTokenizedMappingFile();
- private String resolvePackageFile(String dirname) {
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir,
+ String name) {
+ return name.endsWith( ".dsl" );
+ }
+ };
- File dir = new File(dirname);
- FilenameFilter filter = new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.endsWith(".package");
- }
- };
+ String[] children = dir.list( filter );
+ if ( children.length == 0 ) {
+ throw new BuildException( "There are no DSL files for this directory:" + this.srcdir.getAbsolutePath() );
+ }
- String[] children = dir.list(filter);
- if (children.length > 1) {
- throw new BuildException(
- "There are more than one package configuration file for this directory :"
- + dirname);
- }
+ for ( int index = 0; index < children.length; index++ ) {
+ if ( file.parseAndLoad( new StringReader( loadResource( children[index] ) ) ) ) {
+ final Expander expander = new DefaultExpander();
+ expander.addDSLMapping( file.getMapping() );
+ resolver.addExpander( "*",
+ expander );
+ } else {
+ throw new RuntimeDroolsException( "Error parsing and loading DSL file." + file.getErrors() );
+ }
+ }
- if (children.length == 0) {
- throw new BuildException(
- "There is no package configuration file for this directory:"
- + dirname);
- }
+ return resolver;
+ }
- return children[0];
- }
+ private String resolvePackageFile(String dirname) {
- private String loadResource(final String name) throws IOException {
+ File dir = new File( dirname );
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir,
+ String name) {
+ return name.endsWith( ".package" );
+ }
+ };
- final InputStream in = new FileInputStream(this.srcdir + "/" + name);
- final Reader reader = new InputStreamReader(in);
- final StringBuffer text = new StringBuffer();
- final char[] buf = new char[1024];
- int len = 0;
+ String[] children = dir.list( filter );
+ if ( children.length > 1 ) {
+ throw new BuildException( "There are more than one package configuration file for this directory :" + dirname );
+ }
- while ((len = reader.read(buf)) >= 0) {
- text.append(buf, 0, len);
- }
+ if ( children.length == 0 ) {
+ throw new BuildException( "There is no package configuration file for this directory:" + dirname );
+ }
- return text.toString();
- }
+ return children[0];
+ }
- /**
- * @return
- */
- private AntClassLoader getClassLoader() {
- // defining a new specialized classloader and setting it as the thread
- // context classloader
- AntClassLoader loader = null;
- if (classpath != null) {
- loader = new AntClassLoader(PackageBuilder.class.getClassLoader(),
- getProject(), classpath, false);
- } else {
- loader = new AntClassLoader(PackageBuilder.class.getClassLoader(),
- false);
- }
- loader.setThreadContextLoader();
- return loader;
- }
+ private String loadResource(final String name) throws IOException {
- /**
- * @param loader
- * @return
- */
- private PackageBuilder getPackageBuilder(AntClassLoader loader) {
- // creating package builder configured with the give classloader
- PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- conf.setClassLoader(loader);
- PackageBuilder builder = new PackageBuilder(conf);
- return builder;
- }
+ final InputStream in = new FileInputStream( this.srcdir + "/" + name );
+ final Reader reader = new InputStreamReader( in );
+ final StringBuffer text = new StringBuffer();
+ final char[] buf = new char[1024];
+ int len = 0;
- /**
- * Returns the list of files to be added into the rulebase
- *
- * @return
- */
- private String[] getFileList() {
- // scan source directory for rule files
- DirectoryScanner directoryScanner = getDirectoryScanner(srcdir);
- String[] fileNames = directoryScanner.getIncludedFiles();
+ while ( (len = reader.read( buf )) >= 0 ) {
+ text.append( buf,
+ 0,
+ len );
+ }
- if (fileNames == null || fileNames.length <= 0) {
- throw new BuildException(
- "No rule files found in include directory.");
- }
- return fileNames;
- }
+ return text.toString();
+ }
+ /**
+ * @return
+ */
+ private AntClassLoader getClassLoader() {
+ // defining a new specialized classloader and setting it as the thread
+ // context classloader
+ AntClassLoader loader = null;
+ if ( classpath != null ) {
+ loader = new AntClassLoader( PackageBuilder.class.getClassLoader(),
+ getProject(),
+ classpath,
+ false );
+ } else {
+ loader = new AntClassLoader( PackageBuilder.class.getClassLoader(),
+ false );
+ }
+ loader.setThreadContextLoader();
+ return loader;
+ }
+
+ /**
+ * @param loader
+ * @return
+ */
+ private PackageBuilder getPackageBuilder(AntClassLoader loader) {
+ // creating package builder configured with the give classloader
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ conf.setClassLoader( loader );
+ PackageBuilder builder = new PackageBuilder( conf );
+ return builder;
+ }
+
+ /**
+ * Returns the list of files to be added into the rulebase
+ *
+ * @return
+ */
+ private String[] getFileList() {
+ // scan source directory for rule files
+ DirectoryScanner directoryScanner = getDirectoryScanner( srcdir );
+ String[] fileNames = directoryScanner.getIncludedFiles();
+
+ if ( fileNames == null || fileNames.length <= 0 ) {
+ throw new BuildException( "No rule files found in include directory." );
+ }
+ return fileNames;
+ }
+
+ private KnowledgeBuilder getKnowledgeBuilder(AntClassLoader loader) {
+ // creating package builder configured with the give classloader
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ conf.setClassLoader( loader );
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( conf );
+ return kbuilder;
+ }
+
public void setBinformat(String binformat) {
this.binformat = binformat;
}
@@ -391,4 +556,12 @@
return binformat;
}
+ public String getBintype() {
+ return bintype;
+ }
+
+ public void setBintype(String bintype) {
+ this.bintype = bintype;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-ant/src/test/java/org/drools/contrib/DroolsAntTaskTest.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -16,8 +16,17 @@
package org.drools.contrib;
+import java.io.FileInputStream;
+import java.io.IOException;
+
import junit.framework.Assert;
+import org.drools.KnowledgeBase;
+import org.drools.RuleBase;
+import org.drools.definition.KnowledgePackage;
+import org.drools.rule.Package;
+import org.drools.util.DroolsStreamUtils;
+
/**
* DroolsAntTask test case
*/
@@ -30,39 +39,84 @@
public void setUp() {
configureProject( "src/test/resources/DroolsAntTask.xml" );
}
-
+
public void testVerifierReport() {
try {
executeTarget( "verifierreport" );
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
-
- public void testDslRules() {
+
+ public void testDslRules() throws IOException,
+ ClassNotFoundException {
try {
executeTarget( "dslRules" );
} catch ( Exception e ) {
e.printStackTrace();
Assert.fail( "Should not throw any exception: " + e.getMessage() );
}
+
+ Package p1 = (Package) DroolsStreamUtils.streamIn( new FileInputStream( "target/cheese.rules.dpkg" ) );
+
+ assertNotNull( p1 );
+ assertEquals( 1,
+ p1.getRules().length );
}
-
-
- public void testRules() {
+
+ public void testDslRulesKnowledge() throws IOException,
+ ClassNotFoundException {
try {
+ executeTarget( "dslRulesKnowledge" );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ Assert.fail( "Should not throw any exception: " + e.getMessage() );
+ }
+
+ KnowledgePackage kpackage1 = (KnowledgePackage) DroolsStreamUtils.streamIn( new FileInputStream( "target/cheese.rules.dpkg" ) );
+
+ assertNotNull( kpackage1 );
+ assertEquals( 1,
+ kpackage1.getRules().size() );
+ }
+
+ public void testRules() throws IOException,
+ ClassNotFoundException {
+ try {
executeTarget( "rules" );
} catch ( Exception e ) {
e.printStackTrace();
Assert.fail( "Should not throw any exception: " + e.getMessage() );
}
+
+ RuleBase r1 = (RuleBase) DroolsStreamUtils.streamIn( new FileInputStream( "target/cheese.rules" ) );
+
+ assertNotNull( r1 );
+ assertEquals( 1,
+ r1.getPackages().length );
}
+ public void testRulesKnowledge() throws IOException,
+ ClassNotFoundException {
+ try {
+ executeTarget( "rulesKnowledge" );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ Assert.fail( "Should not throw any exception: " + e.getMessage() );
+ }
+
+ KnowledgeBase kbase = (KnowledgeBase) DroolsStreamUtils.streamIn( new FileInputStream( "target/cheese.rules" ) );
+
+ assertNotNull( kbase );
+ assertEquals( 1,
+ kbase.getKnowledgePackages().size() );
+ }
+
public void testNoPackageFile() {
try {
executeTarget( "rulesnopackagefile" );
Assert.fail( "Should throw an exception " );
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -71,9 +125,9 @@
try {
executeTarget( "rulesmanypackagefile" );
Assert.fail( "Should throw an exception " );
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
- }
+ }
}
Modified: labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-ant/src/test/resources/DroolsAntTask.xml 2009-02-17 09:04:14 UTC (rev 25300)
@@ -1,9 +1,9 @@
<project default="rules">
<!-- Uncomment this for Maven Runner -->
- <property name="eclipsepath" value=""/>
+ <property name="eclipsepath" value=""/>
<!-- Uncomment this for Eclipse Runner -->
- <!-- <property name="eclipsepath" value="../../../"/> -->
+ <!--<property name="eclipsepath" value="../../../"/> -->
<path id="cheese.classpath">
<pathelement location="${eclipsepath}lib/cheese.jar"/>
@@ -37,6 +37,17 @@
</compiler>
</target>
+ <target name="dslRulesKnowledge" >
+ <compiler
+ srcdir="${eclipsepath}src/test/resources/rules"
+ tofile="${eclipsepath}target/cheese.rules.dpkg"
+ classpathref="cheese.classpath"
+ binformat="package"
+ bintype="knowledge" >
+ <include name="*.dslr" />
+ </compiler>
+ </target>
+
<target name="rules" >
<compiler
srcdir="${eclipsepath}src/test/resources/rules"
@@ -49,6 +60,19 @@
</compiler>
</target>
+ <target name="rulesKnowledge" >
+ <compiler
+ srcdir="${eclipsepath}src/test/resources/rules"
+ tofile="${eclipsepath}target/cheese.rules"
+ classpathref="cheese.classpath"
+ bintype="knowledge" >
+ <include name="*.drl" />
+ <include name="*.brl" />
+ <include name="*.xml" />
+ <include name="*.dslr" />
+ </compiler>
+ </target>
+
<target name="rulesnopackagefile" >
<compiler
srcdir="${eclipsepath}src/test/resources/packagefiletest/emptydir"
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/FileScanner.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -9,6 +9,7 @@
import java.util.Map;
import java.util.Properties;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.rule.Package;
import org.drools.util.DroolsStreamUtils;
@@ -20,163 +21,164 @@
*/
public class FileScanner extends PackageProvider {
- File[] files;
- Map lastUpdated = new HashMap();
- Map<String, String> pathToPackage = null;
+ File[] files;
+ Map lastUpdated = new HashMap();
+ Map<String, String> pathToPackage = null;
- /**
- * This sets the list of files to be monitored. This takes a list of paths
- * and files (not directories).
- */
- void configure(Properties config) {
- List paths = RuleAgent.list(config.getProperty(RuleAgent.FILES));
- files = new File[paths.size()];
- for (int i = 0; i < paths.size(); i++) {
- File file = new File((String) paths.get(i));
- if (!file.exists()) {
- throw new IllegalArgumentException("The file " + file.getName()
- + " does not exist.");
- }
- files[i] = file;
- }
- }
+ /**
+ * This sets the list of files to be monitored. This takes a list of paths
+ * and files (not directories).
+ */
+ void configure(Properties config) {
+ List paths = RuleAgent.list( config.getProperty( RuleAgent.FILES ) );
+ files = new File[paths.size()];
+ for ( int i = 0; i < paths.size(); i++ ) {
+ File file = new File( (String) paths.get( i ) );
+ if ( !file.exists() ) {
+ throw new IllegalArgumentException( "The file " + file.getName() + " does not exist." );
+ }
+ files[i] = file;
+ }
+ }
- /**
- * An alternative way to configure.
- */
- void setFiles(File[] files) {
- this.files = files;
- }
+ /**
+ * An alternative way to configure.
+ */
+ void setFiles(File[] files) {
+ this.files = files;
+ }
- /**
- * Perform the scan. If there was an error reading the packages, this will
- * not fail, it will just do nothing (as there may be a temporary IO issue).
- */
- PackageChangeInfo loadPackageChanges() {
- PackageChangeInfo changes = getChangeSet();
- return changes;
- }
+ /**
+ * Perform the scan. If there was an error reading the packages, this will
+ * not fail, it will just do nothing (as there may be a temporary IO issue).
+ */
+ PackageChangeInfo loadPackageChanges() {
+ PackageChangeInfo changes = getChangeSet();
+ return changes;
+ }
- /**
- * Calculate a change set, based on last updated times. (keep a map of
- * files).
- */
- private PackageChangeInfo getChangeSet() {
- PackageChangeInfo info = new PackageChangeInfo();
- if (this.files == null)
- return info;
+ /**
+ * Calculate a change set, based on last updated times. (keep a map of
+ * files).
+ */
+ private PackageChangeInfo getChangeSet() {
+ PackageChangeInfo info = new PackageChangeInfo();
+ if ( this.files == null ) return info;
- if (pathToPackage == null)
- pathToPackage = new HashMap<String, String>();
+ if ( pathToPackage == null ) pathToPackage = new HashMap<String, String>();
- for (int i = 0; i < files.length; i++) {
- File f = files[i];
+ for ( int i = 0; i < files.length; i++ ) {
+ File f = files[i];
- if (!f.exists()) {
- String name = pathToPackage.get(f.getPath());
- if (name != null) {
- info.addRemovedPackage(name);
- }
- } else if (hasChanged(f.getPath(), this.lastUpdated, f
- .lastModified())) {
- Package p = readPackage(f);
- if (p != null) {
- info.addPackage(p);
- pathToPackage.put(f.getPath(), p.getName());
- }
- }
- }
- return info;
- }
+ if ( !f.exists() ) {
+ String name = pathToPackage.get( f.getPath() );
+ if ( name != null ) {
+ info.addRemovedPackage( name );
+ }
+ } else if ( hasChanged( f.getPath(),
+ this.lastUpdated,
+ f.lastModified() ) ) {
+ Package p = readPackage( f );
+ if ( p != null ) {
+ info.addPackage( p );
+ pathToPackage.put( f.getPath(),
+ p.getName() );
+ }
+ }
+ }
+ return info;
+ }
- /**
- * If an exception occurs, it is noted, but ignored. Especially IO, as
- * generally they are temporary.
- */
- private Package readPackage(File pkgFile) {
+ /**
+ * If an exception occurs, it is noted, but ignored. Especially IO, as
+ * generally they are temporary.
+ */
+ private Package readPackage(File pkgFile) {
- String name = pkgFile.getName();
- if (!(name.endsWith(".pkg") || name.endsWith(".drl") || name
- .endsWith(".xls"))) {
- return null;
- }
- // use reflection to load if its DRL, the provider lives in drools
- // compiler.
- if (pkgFile.getName().endsWith(".drl")) {
- try {
- FileLoader fl = (FileLoader) Class.forName(
- "org.drools.compiler.SourcePackageProvider")
- .newInstance();
- return fl.loadPackage(pkgFile);
- } catch (Exception e) {
- this.listener.exception(e);
- return null;
- }
+ String name = pkgFile.getName();
+ if ( !(name.endsWith( ".pkg" ) || name.endsWith( ".drl" ) || name.endsWith( ".xls" )) ) {
+ return null;
+ }
+ // use reflection to load if its DRL, the provider lives in drools
+ // compiler.
+ if ( pkgFile.getName().endsWith( ".drl" ) ) {
+ try {
+ FileLoader fl = (FileLoader) Class.forName( "org.drools.compiler.SourcePackageProvider" ).newInstance();
+ return fl.loadPackage( pkgFile );
+ } catch ( Exception e ) {
+ this.listener.exception( e );
+ return null;
+ }
- // use reflection to load if its XLS, the provider lives in drools
- // decision tables.
- } else if (pkgFile.getName().endsWith(".xls")) {
- try {
- FileLoader fl = (FileLoader) Class.forName(
- "org.drools.decisiontable.SourcePackageProvider")
- .newInstance();
- return fl.loadPackage(pkgFile);
- } catch (Exception e) {
- this.listener.exception(e);
- return null;
- }
+ // use reflection to load if its XLS, the provider lives in drools
+ // decision tables.
+ } else if ( pkgFile.getName().endsWith( ".xls" ) ) {
+ try {
+ FileLoader fl = (FileLoader) Class.forName( "org.drools.decisiontable.SourcePackageProvider" ).newInstance();
+ return fl.loadPackage( pkgFile );
+ } catch ( Exception e ) {
+ this.listener.exception( e );
+ return null;
+ }
- } else {
+ } else {
- Package p1_ = null;
- try {
+ Object o = null;
+ try {
- FileInputStream fis = new FileInputStream(pkgFile);
+ FileInputStream fis = new FileInputStream( pkgFile );
- p1_ = (Package) DroolsStreamUtils.streamIn(fis);
+ o = DroolsStreamUtils.streamIn( fis );
- fis.close();
+ fis.close();
- } catch (FileNotFoundException e) {
- this.listener.exception(e);
- this.listener.warning("Was unable to find the file "
- + pkgFile.getPath());
- } catch (IOException e) {
- this.listener.exception(e);
- } catch (ClassNotFoundException e) {
- this.listener.exception(e);
- this.listener
- .warning("Was unable to load a class when loading a package. Perhaps it is missing from this application.");
- }
- return p1_;
- }
- }
+ } catch ( FileNotFoundException e ) {
+ this.listener.exception( e );
+ this.listener.warning( "Was unable to find the file " + pkgFile.getPath() );
+ } catch ( IOException e ) {
+ this.listener.exception( e );
+ } catch ( ClassNotFoundException e ) {
+ this.listener.exception( e );
+ this.listener.warning( "Was unable to load a class when loading a package. Perhaps it is missing from this application." );
+ }
- boolean hasChanged(String path, Map updates, long fileLastModified) {
+ if ( o instanceof KnowledgePackageImp ) {
+ return ((KnowledgePackageImp) o).pkg;
+ } else {
+ return (Package) o;
+ }
+ }
+ }
- if (!updates.containsKey(path)) {
- updates.put(path, new Long(fileLastModified));
- return true;
- } else {
- Long last = (Long) updates.get(path);
- if (last.longValue() < fileLastModified) {
- updates.put(path, new Long(fileLastModified));
- return true;
- } else {
- return false;
- }
- }
+ boolean hasChanged(String path,
+ Map updates,
+ long fileLastModified) {
- }
+ if ( !updates.containsKey( path ) ) {
+ updates.put( path,
+ new Long( fileLastModified ) );
+ return true;
+ } else {
+ Long last = (Long) updates.get( path );
+ if ( last.longValue() < fileLastModified ) {
+ updates.put( path,
+ new Long( fileLastModified ) );
+ return true;
+ } else {
+ return false;
+ }
+ }
- public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append("FileScanner scanning: ");
- for (int i = 0; i < files.length; i++) {
- File f = files[i];
- buf.append(f.getPath() + " ");
- }
- return buf.toString();
- }
+ }
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append( "FileScanner scanning: " );
+ for ( int i = 0; i < files.length; i++ ) {
+ File f = files[i];
+ buf.append( f.getPath() + " " );
+ }
+ return buf.toString();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -5,10 +5,13 @@
import java.net.URL;
import java.net.URLConnection;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.rule.Package;
import org.drools.util.DroolsStreamUtils;
-public class HttpClientImpl implements IHttpClient {
+public class HttpClientImpl
+ implements
+ IHttpClient {
public LastUpdatedPing checkLastUpdated(URL url) throws IOException {
URLConnection con = url.openConnection();
@@ -16,19 +19,18 @@
try {
httpCon.setRequestMethod( "HEAD" );
-
String lm = httpCon.getHeaderField( "lastModified" );
LastUpdatedPing ping = new LastUpdatedPing();
ping.responseMessage = httpCon.getHeaderFields().toString();
- if (lm != null) {
+ if ( lm != null ) {
ping.lastUpdated = Long.parseLong( lm );
} else {
- long httpLM = httpCon.getLastModified();
- if (httpLM > 0) {
- ping.lastUpdated = httpLM;
- }
+ long httpLM = httpCon.getLastModified();
+ if ( httpLM > 0 ) {
+ ping.lastUpdated = httpLM;
+ }
}
return ping;
@@ -38,14 +40,20 @@
}
- public Package fetchPackage(URL url) throws IOException, ClassNotFoundException {
+ public Package fetchPackage(URL url) throws IOException,
+ ClassNotFoundException {
URLConnection con = url.openConnection();
HttpURLConnection httpCon = (HttpURLConnection) con;
try {
httpCon.setRequestMethod( "GET" );
- return (Package) DroolsStreamUtils.streamIn(httpCon.getInputStream());
+ Object o = DroolsStreamUtils.streamIn( httpCon.getInputStream() );
+ if ( o instanceof KnowledgePackageImp ) {
+ return ((KnowledgePackageImp) o).pkg;
+ } else {
+ return (Package) o;
+ }
} finally {
httpCon.disconnect();
}
@@ -53,16 +61,13 @@
public static void main(String[] args) throws Exception {
HttpClientImpl cl = new HttpClientImpl();
- URL url = new URL("http://localhost:8888/org.drools.guvnor.Guvnor/package/com.billasurf.manufacturing.plant/SNAP");
+ URL url = new URL( "http://localhost:8888/org.drools.guvnor.Guvnor/package/com.billasurf.manufacturing.plant/SNAP" );
-
LastUpdatedPing ping = cl.checkLastUpdated( url );
-
Package p = cl.fetchPackage( url );
-
- System.err.println(ping);
+ System.err.println( ping );
System.err.println( ping.isError() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.net.URL;
+import org.drools.definition.KnowledgePackage;
import org.drools.rule.Package;
/**
@@ -16,10 +17,10 @@
public interface IHttpClient {
public LastUpdatedPing checkLastUpdated(URL url) throws IOException;
-
- public Package fetchPackage(URL url) throws IOException, ClassNotFoundException;
-
-
+
+ public Package fetchPackage(URL url) throws IOException,
+ ClassNotFoundException;
+
}
/**
@@ -28,16 +29,16 @@
* @author Michael Neale
*/
class LastUpdatedPing {
- public long lastUpdated = -1;
+ public long lastUpdated = -1;
public String responseMessage;
-
+
public boolean isError() {
- if (lastUpdated == -1) return true;
- if (responseMessage == null) return true;
- if (responseMessage.indexOf( "200 OK" ) == -1) return true;
+ if ( lastUpdated == -1 ) return true;
+ if ( responseMessage == null ) return true;
+ if ( responseMessage.indexOf( "200 OK" ) == -1 ) return true;
return false;
}
-
+
public String toString() {
return "Last updated: " + lastUpdated + "\n" + "Reponse header: " + responseMessage;
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -1,41 +0,0 @@
-package org.drools.definitions.impl;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.drools.definition.KnowledgePackage;
-import org.drools.definition.process.Process;
-import org.drools.definition.rule.Rule;
-import org.drools.definitions.rule.impl.RuleImpl;
-import org.drools.rule.Package;
-
-public class KnowledgePackageImp implements KnowledgePackage {
- public Package pkg;
-
- public KnowledgePackageImp(Package pkg) {
- this.pkg = pkg;
- }
-
- public String getName() {
- return this.pkg.getName();
- }
-
- public Collection<Rule> getRules() {
- org.drools.rule.Rule[] rules = pkg.getRules();
- List<Rule> list = new ArrayList<Rule>( rules.length );
- for( org.drools.rule.Rule rule : rules ) {
- list.add( new RuleImpl( rule ) );
- }
- return list;
- }
-
- public Collection<Process> getProcesses() {
- Collection<org.drools.definition.process.Process> processes = ( Collection<org.drools.definition.process.Process> ) pkg.getRuleFlows().values();
- List<Process> list = new ArrayList<Process>( processes.size() );
- for( org.drools.definition.process.Process process : processes ) {
- list.add( process );
- }
- return list;
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java (from rev 25235, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -0,0 +1,62 @@
+package org.drools.definitions.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.definition.rule.Rule;
+import org.drools.definitions.rule.impl.RuleImpl;
+import org.drools.rule.Package;
+
+public class KnowledgePackageImp
+ implements
+ KnowledgePackage,
+ Externalizable {
+ public Package pkg;
+
+ public KnowledgePackageImp() {
+ this.pkg = null;
+ }
+
+ public KnowledgePackageImp(Package pkg) {
+ this.pkg = pkg;
+ }
+
+ public String getName() {
+ return this.pkg.getName();
+ }
+
+ public Collection<Rule> getRules() {
+ org.drools.rule.Rule[] rules = pkg.getRules();
+ List<Rule> list = new ArrayList<Rule>( rules.length );
+ for ( org.drools.rule.Rule rule : rules ) {
+ list.add( new RuleImpl( rule ) );
+ }
+ return list;
+ }
+
+ public Collection<Process> getProcesses() {
+ Collection<org.drools.definition.process.Process> processes = (Collection<org.drools.definition.process.Process>) pkg.getRuleFlows().values();
+ List<Process> list = new ArrayList<Process>( processes.size() );
+ for ( org.drools.definition.process.Process process : processes ) {
+ list.add( process );
+ }
+ return list;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ this.pkg = new Package();
+ this.pkg.readExternal( in );
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ this.pkg.writeExternal( out );
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/impl/KnowledgePackageImp.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -16,6 +16,8 @@
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseConfiguration.SequentialAgenda;
import org.drools.common.InternalRuleBase;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.rule.Package;
public class RuleAgentTest extends TestCase {
@@ -101,6 +103,44 @@
}
+ public void testFilesWithKnowledgePackage() throws Exception {
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
+
+ KnowledgePackage kpackage1 = new KnowledgePackageImp( new Package( "p1" ) );
+ File p1f = new File( dir,
+ "p1.pkg" );
+ RuleBaseAssemblerTest.writePackage( kpackage1,
+ p1f );
+
+ KnowledgePackage kpackage2 = new KnowledgePackageImp( new Package( "p2" ) );
+ File p2f = new File( dir,
+ "p2.pkg" );
+ RuleBaseAssemblerTest.writePackage( kpackage2,
+ p2f );
+
+ String path = dir.getPath() + "/" + "p1.pkg " + dir.getPath() + "/" + "p2.pkg";
+
+ Properties props = new Properties();
+ props.setProperty( "file",
+ path );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
+ RuleBase rb = ag.getRuleBase();
+ assertNotNull( rb );
+ assertEquals( 2,
+ rb.getPackages().length );
+
+ assertFalse( ag.isPolling() );
+
+ props.setProperty( "poll",
+ "1" );
+ ag = RuleAgent.newRuleAgent( props );
+ assertTrue( ag.isPolling() );
+
+ ag.stopPolling();
+ assertFalse( ag.isPolling() );
+
+ }
+
// public void testSpaces() throws Exception {
// File dir = RuleBaseAssemblerTest.getTempDirectory();
// File dir_ = new File(dir, "whee waah");
@@ -270,66 +310,130 @@
rb__ );
}
-
-// // FIXME - for some reason failing on hudson
-// public void FIXME_testPollingFilesRuleBaseReplace2() throws Exception {
-// File dir = RuleBaseAssemblerTest.getTempDirectory();
-//
-// Package p1 = new Package( "p1" );
-// File p1f = new File( dir,
-// "p43_.pkg" );
-// RuleBaseAssemblerTest.writePackage( p1,
-// p1f );
-//
-// Package p2 = new Package( "p2" );
-// File p2f = new File( dir,
-// "p44_.pkg" );
-// RuleBaseAssemblerTest.writePackage( p2,
-// p2f );
-//
-// String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
-//
-// Properties props = new Properties();
-// props.setProperty( "file",
-// path );
-//
-// props.setProperty( "newInstance",
-// "true" );
-//
-// props.setProperty( "poll", "1" );
-//
-// KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "agent1", props );
-//
-// KnowledgeBase kbase = kagent.getKnowledgeBase();
-//
-// assertEquals( 2,
-// kbase.getKnowledgePackages().size() );
-//
-// KnowledgeBase kbase_ = kagent.getKnowledgeBase();
-// assertSame( kbase,
-// kbase_ );
-//
-// //only change one
-// RuleBaseAssemblerTest.writePackage( p1,
-// p1f );
-// int i = 0;
-// while ( i < 20 && kagent.getKnowledgeBase() == kbase ) {
-// // this will sleep for a max of 10 seconds, it'll check every 500ms to see if a new kbase exists
-// // if it exists, it will break the loop.
-// Thread.sleep( 500 );
-// i++;
-// }
-//
-// kbase_ = kagent.getKnowledgeBase();
-// assertNotSame( kbase,
-// kbase_ );
-//
-// //check we will have 2
-// assertEquals( 2,
-// kbase.getKnowledgePackages().size() );
-//
-// }
+ public void testPollingFilesRuleBaseReplaceWithKnowledgePackages() throws Exception {
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
+
+ KnowledgePackage kpackage1 = new KnowledgePackageImp( new Package( "p1" ) );
+ File p1f = new File( dir,
+ "p43_.pkg" );
+ RuleBaseAssemblerTest.writePackage( kpackage1,
+ p1f );
+
+ KnowledgePackage kpackage2 = new KnowledgePackageImp( new Package( "p2" ));
+ File p2f = new File( dir,
+ "p44_.pkg" );
+ RuleBaseAssemblerTest.writePackage( kpackage2,
+ p2f );
+
+ String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
+
+ Properties props = new Properties();
+ props.setProperty( "file",
+ path );
+
+ props.setProperty( "newInstance",
+ "true" );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+ assertTrue( ag.isNewInstance() );
+
+ RuleBase rb = ag.getRuleBase();
+ assertEquals( 2,
+ rb.getPackages().length );
+
+ RuleBase rb_ = ag.getRuleBase();
+ assertSame( rb,
+ rb_ );
+
+ ag.refreshRuleBase();
+
+ assertSame( rb,
+ ag.getRuleBase() );
+ Thread.sleep( 1000 );
+ //only change one
+ RuleBaseAssemblerTest.writePackage( kpackage1,
+ p1f );
+ Thread.sleep( 1000 );
+ ag.refreshRuleBase();
+
+ rb_ = ag.getRuleBase();
+
+ assertNotSame( rb,
+ rb_ );
+
+ //check we will have 2
+ assertEquals( 2,
+ rb_.getPackages().length );
+
+ ag.refreshRuleBase();
+ ag.refreshRuleBase();
+
+ RuleBase rb__ = ag.getRuleBase();
+ assertSame( rb_,
+ rb__ );
+
+ }
+
+ // // FIXME - for some reason failing on hudson
+ // public void FIXME_testPollingFilesRuleBaseReplace2() throws Exception {
+ // File dir = RuleBaseAssemblerTest.getTempDirectory();
+ //
+ // Package p1 = new Package( "p1" );
+ // File p1f = new File( dir,
+ // "p43_.pkg" );
+ // RuleBaseAssemblerTest.writePackage( p1,
+ // p1f );
+ //
+ // Package p2 = new Package( "p2" );
+ // File p2f = new File( dir,
+ // "p44_.pkg" );
+ // RuleBaseAssemblerTest.writePackage( p2,
+ // p2f );
+ //
+ // String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
+ //
+ // Properties props = new Properties();
+ // props.setProperty( "file",
+ // path );
+ //
+ // props.setProperty( "newInstance",
+ // "true" );
+ //
+ // props.setProperty( "poll", "1" );
+ //
+ // KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "agent1", props );
+ //
+ // KnowledgeBase kbase = kagent.getKnowledgeBase();
+ //
+ // assertEquals( 2,
+ // kbase.getKnowledgePackages().size() );
+ //
+ // KnowledgeBase kbase_ = kagent.getKnowledgeBase();
+ // assertSame( kbase,
+ // kbase_ );
+ //
+ // //only change one
+ // RuleBaseAssemblerTest.writePackage( p1,
+ // p1f );
+ // int i = 0;
+ // while ( i < 20 && kagent.getKnowledgeBase() == kbase ) {
+ // // this will sleep for a max of 10 seconds, it'll check every 500ms to see if a new kbase exists
+ // // if it exists, it will break the loop.
+ // Thread.sleep( 500 );
+ // i++;
+ // }
+ //
+ // kbase_ = kagent.getKnowledgeBase();
+ // assertNotSame( kbase,
+ // kbase_ );
+ //
+ // //check we will have 2
+ // assertEquals( 2,
+ // kbase.getKnowledgePackages().size() );
+ //
+ // }
+
public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
File dir = RuleBaseAssemblerTest.getTempDirectory();
@@ -570,19 +674,19 @@
public void debug(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
public void info(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
public void warning(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
};
@@ -778,19 +882,19 @@
public void debug(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
public void info(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
public void warning(String message,
Object object) {
// TODO Auto-generated method stub
-
+
}
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleBaseAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleBaseAssemblerTest.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleBaseAssemblerTest.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -13,56 +13,71 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.base.ClassFieldAccessorCache;
+import org.drools.definition.KnowledgePackage;
import org.drools.rule.Package;
import org.drools.util.DroolsStreamUtils;
public class RuleBaseAssemblerTest extends TestCase {
-
public void testAssemblePackages() throws Exception {
RuleBase rb = RuleBaseFactory.newRuleBase();
- Package pkg = new Package("goober");
+ Package pkg = new Package( "goober" );
pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
rb.addPackage( pkg );
- Package p1 = new Package("p1");
+ Package p1 = new Package( "p1" );
p1.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
-
+
File f = getTempDirectory();
- File p1file = new File(f, "p1.pkg");
+ File p1file = new File( f,
+ "p1.pkg" );
- writePackage( p1, p1file );
+ writePackage( p1,
+ p1file );
Package p1_ = readPackage( p1file );
rb = RuleBaseFactory.newRuleBase();
rb.addPackage( p1_ );
-
}
public static Package readPackage(File p1file) throws IOException,
- FileNotFoundException,
- ClassNotFoundException {
- return (Package) DroolsStreamUtils.streamIn(new FileInputStream(p1file));
+ FileNotFoundException,
+ ClassNotFoundException {
+ return (Package) DroolsStreamUtils.streamIn( new FileInputStream( p1file ) );
}
- public static void writePackage(Package pkg, File p1file) throws IOException,
- FileNotFoundException {
- FileOutputStream out = new FileOutputStream(p1file);
+ public static void writePackage(Package pkg,
+ File p1file) throws IOException,
+ FileNotFoundException {
+ FileOutputStream out = new FileOutputStream( p1file );
try {
- DroolsStreamUtils.streamOut( out, pkg );
+ DroolsStreamUtils.streamOut( out,
+ pkg );
} finally {
out.close();
}
}
+ public static void writePackage(KnowledgePackage kpackage,
+ File p1file) throws IOException,
+ FileNotFoundException {
+ FileOutputStream out = new FileOutputStream( p1file );
+ try {
+ DroolsStreamUtils.streamOut( out,
+ kpackage );
+ } finally {
+ out.close();
+ }
+ }
+
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 !");
+ if ( f.exists() ) {
+ if ( f.isFile() ) {
+ throw new IllegalStateException( "The temp directory exists as a file. Nuke it now !" );
}
deleteDir( f );
f.mkdir();
@@ -73,19 +88,21 @@
}
private static File tempDir() {
- File tmp = new File(System.getProperty( "java.io.tmpdir" ));
+ File tmp = new File( System.getProperty( "java.io.tmpdir" ) );
- return new File(tmp, "__temp_test_drools_packages");
+ return new File( tmp,
+ "__temp_test_drools_packages" );
}
public static boolean deleteDir(File dir) {
- if (dir.isDirectory()) {
+ if ( dir.isDirectory() ) {
String[] children = dir.list();
- for (String child : children) {
- File file = new File(dir, child);
+ for ( String child : children ) {
+ File file = new File( dir,
+ child );
boolean success = deleteDir( file );
- if (!success) {
+ if ( !success ) {
// this is a hack, but some time you need to wait for a file release to release
// Windows was having intermittent issues with DirectoryScannerTest with the dir not being empty
System.gc();
@@ -95,7 +112,7 @@
throw new RuntimeException( "This should never happen" );
}
success = deleteDir( file );
- if ( !success) {
+ if ( !success ) {
//ok now give up
//throw new RuntimeException("Unable to delete !");
return false;
@@ -119,16 +136,14 @@
*
* @return a non-null test suite.
*/
- public static Test suite()
- {
- return new TestSuite(RuleBaseAssemblerTest.class);
+ public static Test suite() {
+ return new TestSuite( RuleBaseAssemblerTest.class );
}
/**
* Run the test case.
*/
- public static void main(String args[])
- {
- RuleBaseAssemblerTest.suite();
+ public static void main(String args[]) {
+ RuleBaseAssemblerTest.suite();
}
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java 2009-02-17 08:18:52 UTC (rev 25299)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java 2009-02-17 09:04:14 UTC (rev 25300)
@@ -12,6 +12,8 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.common.DroolsObjectInputStream;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.rule.Package;
public class URLScannerTest extends TestCase {
@@ -20,22 +22,48 @@
File dir = RuleBaseAssemblerTest.getTempDirectory();
String url = "http://localhost:8080/foo/bar.bar/packages/IMINYRURL/LATEST";
- String fileName = URLEncoder.encode( url, "UTF-8" );
+ String fileName = URLEncoder.encode( url,
+ "UTF-8" );
File f = new File( dir,
fileName );
Package p = new Package( "x" );
- RuleBaseAssemblerTest.writePackage( p, f );
+ RuleBaseAssemblerTest.writePackage( p,
+ f );
DroolsObjectInputStream in = new DroolsObjectInputStream( new FileInputStream( f ) );
Package p_ = (Package) in.readObject();
in.close();
- assertEquals( "x", p_.getName() );
+ assertEquals( "x",
+ p_.getName() );
}
+ public void testFileURLCacheWithKnowledgePackage() throws Exception {
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
+
+ String url = "http://localhost:8080/foo/bar.bar/packages/IMINYRURL/LATEST";
+ String fileName = URLEncoder.encode( url,
+ "UTF-8" );
+
+ File f = new File( dir,
+ fileName );
+
+ KnowledgePackage kpackage = new KnowledgePackageImp( new Package( "x" ) );
+
+ RuleBaseAssemblerTest.writePackage( kpackage,
+ f );
+
+ DroolsObjectInputStream in = new DroolsObjectInputStream( new FileInputStream( f ) );
+ KnowledgePackage p_ = (KnowledgePackage) in.readObject();
+ in.close();
+ assertEquals( "x",
+ p_.getName() );
+
+ }
+
// public void testGetURL() throws Exception {
// String url = "http://localhost:8080/foo/bar.bar/packages/IMINYRURL/LATEST";
// URL u = new URL(url);
@@ -51,15 +79,20 @@
URLScanner scan = new URLScanner();
File dir = RuleBaseAssemblerTest.getTempDirectory();
- File[] result = scan.getFiles( new URL[]{u1, u2}, dir );
+ File[] result = scan.getFiles( new URL[]{u1, u2},
+ dir );
- assertEquals( 2, result.length );
- assertEquals( dir.getPath(), result[0].getParent() );
+ assertEquals( 2,
+ result.length );
+ assertEquals( dir.getPath(),
+ result[0].getParent() );
File f1 = result[0];
File f2 = result[1];
- assertEquals( "http%3A%2F%2Flocalhost%3A8080%2Ffoo%2Fbar.bar%2Fpackages%2FIMINYRURL%2FLATEST.pkg", f1.getName() );
- assertEquals( "http%3A%2F%2Flocalhost%3A8080%2Ffoo%2Fbar.bar%2Fpackages%2FIMINYRURL%2FPROD.pkg", f2.getName() );
+ assertEquals( "http%3A%2F%2Flocalhost%3A8080%2Ffoo%2Fbar.bar%2Fpackages%2FIMINYRURL%2FLATEST.pkg",
+ f1.getName() );
+ assertEquals( "http%3A%2F%2Flocalhost%3A8080%2Ffoo%2Fbar.bar%2Fpackages%2FIMINYRURL%2FPROD.pkg",
+ f2.getName() );
}
@@ -69,21 +102,29 @@
File dir = RuleBaseAssemblerTest.getTempDirectory();
Properties config = new Properties();
- config.setProperty( RuleAgent.LOCAL_URL_CACHE, dir.getPath() );
- config.setProperty( RuleAgent.URLS, "http://goo.ber http://wee.waa" );
+ config.setProperty( RuleAgent.LOCAL_URL_CACHE,
+ dir.getPath() );
+ config.setProperty( RuleAgent.URLS,
+ "http://goo.ber http://wee.waa" );
scan.configure( config );
assertNotNull( scan.lastUpdated );
- assertEquals( 2, scan.urls.length );
- assertEquals( "http://goo.ber", scan.urls[0].toExternalForm() );
- assertEquals( "http://wee.waa", scan.urls[1].toExternalForm() );
+ assertEquals( 2,
+ scan.urls.length );
+ assertEquals( "http://goo.ber",
+ scan.urls[0].toExternalForm() );
+ assertEquals( "http://wee.waa",
+ scan.urls[1].toExternalForm() );
assertNotNull( scan.localCacheFileScanner );
- assertEquals( 2, scan.localCacheFileScanner.files.length );
+ assertEquals( 2,
+ scan.localCacheFileScanner.files.length );
- assertEquals( "http%3A%2F%2Fgoo.ber.pkg", scan.localCacheFileScanner.files[0].getName() );
- assertEquals( "http%3A%2F%2Fwee.waa.pkg", scan.localCacheFileScanner.files[1].getName() );
+ assertEquals( "http%3A%2F%2Fgoo.ber.pkg",
+ scan.localCacheFileScanner.files[0].getName() );
+ assertEquals( "http%3A%2F%2Fwee.waa.pkg",
+ scan.localCacheFileScanner.files[1].getName() );
}
@@ -103,10 +144,10 @@
int numfiles = dir.list().length;
-
Properties config = new Properties();
//config.setProperty( RuleAgent.LOCAL_URL_CACHE, dir.getPath() );
- config.setProperty( RuleAgent.URLS, "http://goo2.ber http://wee2.waa" );
+ config.setProperty( RuleAgent.URLS,
+ "http://goo2.ber http://wee2.waa" );
scan.configure( config );
@@ -134,34 +175,38 @@
RuleBase rb = RuleBaseFactory.newRuleBase();
AgentEventListener list = getNilListener();
- PackageProvider.applyChanges( rb, false, scan.loadPackageChanges().getChangedPackages(), list );
+ PackageProvider.applyChanges( rb,
+ false,
+ scan.loadPackageChanges().getChangedPackages(),
+ list );
+ assertEquals( 2,
+ rb.getPackages().length );
- assertEquals( 2, rb.getPackages().length );
+ assertExists( new String[]{"goo2.ber", "wee2.waa"},
+ rb.getPackages() );
- assertExists(new String[] {"goo2.ber", "wee2.waa"}, rb.getPackages());
-
-
-
- assertEquals( numfiles, dir.list().length );
+ assertEquals( numfiles,
+ dir.list().length );
}
-
-
private AgentEventListener getNilListener() {
return new MockListener();
}
- private void assertExists(String[] names, Package[] packages) {
+ private void assertExists(String[] names,
+ Package[] packages) {
for ( int i = 0; i < packages.length; i++ ) {
String name = packages[i].getName();
int matches = 0;
for ( int j = 0; j < names.length; j++ ) {
- if (name.equals( names[j] )) {
+ if ( name.equals( names[j] ) ) {
matches++;
}
}
- assertEquals("Should only have one package named " + name, 1, matches);
+ assertEquals( "Should only have one package named " + name,
+ 1,
+ matches );
}
}
@@ -172,8 +217,10 @@
File dir = RuleBaseAssemblerTest.getTempDirectory();
Properties config = new Properties();
- config.setProperty( RuleAgent.LOCAL_URL_CACHE, dir.getPath() );
- config.setProperty( RuleAgent.URLS, "http://goo.ber http://wee.waa" );
+ config.setProperty( RuleAgent.LOCAL_URL_CACHE,
+ dir.getPath() );
+ config.setProperty( RuleAgent.URLS,
+ "http://goo.ber http://wee.waa" );
scan.configure( config );
@@ -200,13 +247,16 @@
assertNotNull( scan.localCacheDir );
RuleBase rb = RuleBaseFactory.newRuleBase();
- PackageProvider.applyChanges( rb, false, scan.loadPackageChanges().getChangedPackages(), getNilListener() );
+ PackageProvider.applyChanges( rb,
+ false,
+ scan.loadPackageChanges().getChangedPackages(),
+ getNilListener() );
+ assertEquals( 2,
+ rb.getPackages().length );
+ assertTrue( "goo.ber".equals( rb.getPackages()[0].getName() ) || "goo.ber".equals( rb.getPackages()[1].getName() ) );
+ assertTrue( "wee.waa".equals( rb.getPackages()[0].getName() ) || "wee.waa".equals( rb.getPackages()[1].getName() ) );
- assertEquals( 2, rb.getPackages().length );
- assertTrue("goo.ber".equals(rb.getPackages()[0].getName()) || "goo.ber".equals(rb.getPackages()[1].getName()));
- assertTrue("wee.waa".equals(rb.getPackages()[0].getName()) || "wee.waa".equals(rb.getPackages()[1].getName()));
-
//assertEquals( 2, dir.list().length );
//now check with failures:
@@ -215,7 +265,7 @@
public LastUpdatedPing checkLastUpdated(URL url) throws IOException {
LastUpdatedPing ping = new LastUpdatedPing();
- if (url.toExternalForm().equals( "http://wee.waa" )) {
+ if ( url.toExternalForm().equals( "http://wee.waa" ) ) {
ping.lastUpdated = -1;
ping.responseMessage = "XXX";
@@ -227,16 +277,21 @@
}
public Package fetchPackage(URL url) throws IOException {
- throw new IOException("poo");
+ throw new IOException( "poo" );
}
};
rb = RuleBaseFactory.newRuleBase();
- assertEquals(0, rb.getPackages().length);
- PackageProvider.applyChanges( rb, true, scan.loadPackageChanges().getChangedPackages(), getNilListener() );
+ assertEquals( 0,
+ rb.getPackages().length );
+ PackageProvider.applyChanges( rb,
+ true,
+ scan.loadPackageChanges().getChangedPackages(),
+ getNilListener() );
- assertEquals(2, rb.getPackages().length);
+ assertEquals( 2,
+ rb.getPackages().length );
final boolean[] fetchCalled = new boolean[1];
@@ -254,15 +309,18 @@
public Package fetchPackage(URL url) throws IOException {
fetchCalled[0] = true;
- throw new IOException("poo");
+ throw new IOException( "poo" );
}
};
PackageChangeInfo changes = scan.loadPackageChanges();
- assertEquals(0, changes.getChangedPackages().size());
- assertEquals(true, fetchCalled[0]);
- assertEquals(2, ((MockListener)scan.listener).exceptions.size());
+ assertEquals( 0,
+ changes.getChangedPackages().size() );
+ assertEquals( true,
+ fetchCalled[0] );
+ assertEquals( 2,
+ ((MockListener) scan.listener).exceptions.size() );
}
@@ -272,18 +330,24 @@
scan.listener = new MockListener();
File dir = RuleBaseAssemblerTest.getTempDirectory();
- Package p1 = new Package("goo.ber");
- Package p2 = new Package("wee.waa");
+ Package p1 = new Package( "goo.ber" );
+ Package p2 = new Package( "wee.waa" );
- File f1 = URLScanner.getLocalCacheFileForURL( dir, new URL("http://goo.ber") );
- File f2 = URLScanner.getLocalCacheFileForURL( dir, new URL("http://wee.waa") );
+ File f1 = URLScanner.getLocalCacheFileForURL( dir,
+ new URL( "http://goo.ber" ) );
+ File f2 = URLScanner.getLocalCacheFileForURL( dir,
+ new URL( "http://wee.waa" ) );
- RuleBaseAssemblerTest.writePackage( p1, f1 );
- RuleBaseAssemblerTest.writePackage( p2, f2 );
+ RuleBaseAssemblerTest.writePackage( p1,
+ f1 );
+ RuleBaseAssemblerTest.writePackage( p2,
+ f2 );
Properties config = new Properties();
- config.setProperty( RuleAgent.LOCAL_URL_CACHE, dir.getPath() );
- config.setProperty( RuleAgent.URLS, "http://goo.ber http://wee.waa" );
+ config.setProperty( RuleAgent.LOCAL_URL_CACHE,
+ dir.getPath() );
+ config.setProperty( RuleAgent.URLS,
+ "http://goo.ber http://wee.waa" );
scan.configure( config );
@@ -303,12 +367,13 @@
assertNotNull( scan.localCacheDir );
RuleBase rb = RuleBaseFactory.newRuleBase();
- PackageProvider.applyChanges( rb, true, scan.loadPackageChanges().getChangedPackages(), getNilListener() );
- assertEquals(2, rb.getPackages().length);
+ PackageProvider.applyChanges( rb,
+ true,
+ scan.loadPackageChanges().getChangedPackages(),
+ getNilListener() );
+ assertEquals( 2,
+ rb.getPackages().length );
-
}
-
-
}
More information about the jboss-svn-commits
mailing list