[jboss-svn-commits] JBL Code SVN: r33494 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 14 14:29:30 EDT 2010


Author: eaa
Date: 2010-06-14 14:29:30 -0400 (Mon, 14 Jun 2010)
New Revision: 33494

Added:
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/io/
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/io/ResourceChangeScannerTest.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerConfigurationImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java
Log:
JBRULES-2549: ResourceChangeScanner should fail when scanning interval is set to a negative value or 0
	- ResourceChangeScannerImpl: an IllegalArgumentException is thrown when trying to configure the scanner with a negative or 0 interval
	- ResourceChangeScannerConfiguratioinImpl: The default value for "interval" was changed from 0 to 60
	- Added a test

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerConfigurationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerConfigurationImpl.java	2010-06-14 14:35:16 UTC (rev 33493)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerConfigurationImpl.java	2010-06-14 18:29:30 UTC (rev 33494)
@@ -10,7 +10,7 @@
     private int interval;
     
     public ResourceChangeScannerConfigurationImpl() {
-        
+        interval = 60;
     }
     
     public ResourceChangeScannerConfigurationImpl(Properties properties) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java	2010-06-14 14:35:16 UTC (rev 33493)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java	2010-06-14 18:29:30 UTC (rev 33494)
@@ -29,7 +29,7 @@
 		this.listener = SystemEventListenerFactory.getSystemEventListener();
 		this.resources = new HashMap<Resource, Set<ResourceChangeNotifier>>();
 		this.directories = new HashSet<Resource>();
-		this.interval = 60;
+		this.setInterval(60);
         this.listener.info( "ResourceChangeScanner created with default interval=60" );
 	}
 
@@ -38,7 +38,7 @@
 	}
 
 	public void configure(ResourceChangeScannerConfiguration configuration) {
-        this.interval = ((ResourceChangeScannerConfigurationImpl) configuration).getInterval();
+        this.setInterval(((ResourceChangeScannerConfigurationImpl) configuration).getInterval());
         this.listener.info( "ResourceChangeScanner reconfigured with interval=" + getInterval() );
 
 		// restart it if it's already running.
@@ -225,6 +225,10 @@
 	}
 
 	public void setInterval(int interval) {
+            if (interval <= 0 ){
+                throw new IllegalArgumentException("Invalid interval time: "+interval+". It should be a positive number bigger than 0");
+            }
+
 		this.interval = interval;
 		this.listener.info("ResourceChangeScanner reconfigured with interval="
 				+ getInterval());

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/io/ResourceChangeScannerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/io/ResourceChangeScannerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/io/ResourceChangeScannerTest.java	2010-06-14 18:29:30 UTC (rev 33494)
@@ -0,0 +1,123 @@
+/*
+ *  Copyright 2010 esteban.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.io;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author esteban
+ */
+public class ResourceChangeScannerTest {
+
+    public ResourceChangeScannerTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() {
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    @Test
+    public void testValidPollIntervals(){
+        //the default configuration should be valid!!
+        ResourceFactory.getResourceChangeScannerService();
+
+        //using a default configuration object should also work
+        ResourceChangeScannerConfiguration conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+        ResourceFactory.getResourceChangeScannerService().configure(conf);
+
+        //a positive value should be valid
+        conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+        conf.setProperty("drools.resource.scanner.interval", "10");
+        ResourceFactory.getResourceChangeScannerService().configure(conf);
+
+        ResourceFactory.getResourceChangeScannerService().setInterval(5);
+
+    }
+
+    @Test
+    public void testInvalidPollIntervals(){
+
+        //0 is not allowed because of performance reasons
+        try{
+            ResourceChangeScannerConfiguration conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+            conf.setProperty("drools.resource.scanner.interval", "0");
+            ResourceFactory.getResourceChangeScannerService().configure(conf);
+            fail("0 should not be allowed because of performance reasons.");
+        } catch (IllegalArgumentException ex){
+            
+        }
+
+        //a negative interval value is not allowed
+        try{
+            ResourceChangeScannerConfiguration conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+            conf.setProperty("drools.resource.scanner.interval", "-10");
+            ResourceFactory.getResourceChangeScannerService().configure(conf);
+            fail("Negative values should not be allowed.");
+        } catch (IllegalArgumentException ex){
+
+        }
+
+        //0 is not allowed even when setting after Scanner configuration
+        try{
+            ResourceChangeScannerConfiguration conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+            conf.setProperty("drools.resource.scanner.interval", "60");
+            ResourceFactory.getResourceChangeScannerService().configure(conf);
+
+            ResourceFactory.getResourceChangeScannerService().setInterval(0);
+
+            fail("0 should not be allowed because of performance reasons.");
+        } catch (IllegalArgumentException ex){
+
+        }
+
+
+        //a negative interval value is not allowed even when setting after
+        //Scanner configuration
+        try{
+            ResourceChangeScannerConfiguration conf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+            conf.setProperty("drools.resource.scanner.interval", "60");
+            ResourceFactory.getResourceChangeScannerService().configure(conf);
+
+            ResourceFactory.getResourceChangeScannerService().setInterval(-10);
+
+            fail("Negative values should not be allowed.");
+        } catch (IllegalArgumentException ex){
+
+        }
+
+    }
+
+}
\ No newline at end of file



More information about the jboss-svn-commits mailing list