You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oh...@apache.org on 2006/12/07 21:58:10 UTC

svn commit: r483661 - in /jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration: TestXMLConfiguration.java reloading/FileAlwaysReloadingStrategy.java

Author: oheger
Date: Thu Dec  7 12:58:09 2006
New Revision: 483661

URL: http://svn.apache.org/viewvc?view=rev&rev=483661
Log:
Added new FileAlwaysReloadingStrategy under test classes for simplifying reloading tests for file-based configurations

Added:
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java   (with props)
Modified:
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java?view=diff&rev=483661&r1=483660&r2=483661
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java Thu Dec  7 12:58:09 2006
@@ -32,6 +32,7 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.apache.commons.configuration.reloading.FileAlwaysReloadingStrategy;
 import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
 import org.apache.commons.configuration.reloading.InvariantReloadingStrategy;
 import org.apache.commons.configuration.tree.ConfigurationNode;
@@ -556,7 +557,7 @@
         conf.load(testSaveConf);
         assertEquals("foo", conf.getString("element3[@name]"));
     }
-    
+
     /**
      * Tests collaboration between XMLConfiguration and a reloading strategy.
      */
@@ -573,27 +574,22 @@
             out.close();
             out = null;
             conf.setFile(testSaveConf);
-            FileChangedReloadingStrategy strategy = new FileChangedReloadingStrategy();
+            FileAlwaysReloadingStrategy strategy = new FileAlwaysReloadingStrategy();
             strategy.setRefreshDelay(100);
             conf.setReloadingStrategy(strategy);
             assertEquals(strategy, conf.getReloadingStrategy());
+            assertEquals("Wrong file monitored", testSaveConf.getAbsolutePath(),
+                    strategy.getMonitoredFile().getAbsolutePath());
             conf.load();
             assertEquals(1, conf.getInt("test"));
-            Thread.sleep(1000);
 
             out = new PrintWriter(new FileWriter(testSaveConf));
             out.println("<?xml version=\"1.0\"?><config><test>2</test></config>");
             out.close();
             out = null;
 
-            int trial = 0, value;
-            // repeat multiple times because there are sometimes race conditions
-            do
-            {
-                Thread.sleep(1000);
-                value = conf.getInt("test");
-            } while (value != 2 && ++trial <= 10);
-            assertEquals(2, value);
+            int value = conf.getInt("test");
+            assertEquals("No reloading performed", 2, value);
         }
         finally
         {
@@ -603,7 +599,7 @@
             }
         }
     }
-    
+
     /**
      * Tests access to tag names with delimiter characters.
      */
@@ -612,7 +608,7 @@
         assertEquals("Name with dot", conf.getString("complexNames.my..elem"));
         assertEquals("Another dot", conf.getString("complexNames.my..elem.sub..elem"));
     }
-    
+
     /**
      * Tests setting a custom document builder.
      */
@@ -646,14 +642,14 @@
         {
             //ok
         }
-        
+
         // Try to load a valid document with a validating builder
         conf = new XMLConfiguration();
         conf.setDocumentBuilder(builder);
         conf.load(new File("conf/testValidateValid.xml"));
         assertTrue(conf.containsKey("table.fields.field(1).type"));
     }
-    
+
     /**
      * Tests the clone() method.
      */
@@ -666,13 +662,13 @@
         assertNull(copy.getDocument());
         assertNotNull(conf.getFileName());
         assertNull(copy.getFileName());
-        
+
         copy.setProperty("element3", "clonedValue");
         assertEquals("value", conf.getString("element3"));
         conf.setProperty("element3[@name]", "originalFoo");
         assertEquals("foo", copy.getString("element3[@name]"));
     }
-    
+
     /**
      * Tests the subset() method. There was a bug that calling subset() had
      * undesired side effects.
@@ -683,11 +679,11 @@
         conf.load(new File("conf/testHierarchicalXMLConfiguration.xml"));
         conf.subset("tables.table(0)");
         conf.save(testSaveConf);
-        
+
         conf = new XMLConfiguration(testSaveConf);
         assertEquals("users", conf.getString("tables.table(0).name"));
     }
-    
+
     /**
      * Tests string properties with list delimiters and escaped delimiters.
      */
@@ -700,7 +696,7 @@
         assertEquals(2, conf.getMaxIndex("split.list1"));
         assertEquals("a,b,c", conf.getString("split.list2"));
     }
-    
+
     /**
      * Tests string properties with list delimiters when delimiter parsing
      * is disabled
@@ -728,7 +724,7 @@
         assertEquals("value1", conf.getString("entry(0)"));
         assertEquals("test2", conf.getString("entry(1)[@key]"));
     }
-    
+
     /**
      * Tests DTD validation using the setValidating() method.
      */

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java?view=auto&rev=483661
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java Thu Dec  7 12:58:09 2006
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.commons.configuration.reloading;
+
+import java.io.File;
+
+/**
+ * A specialized reloading strategy for files that will always report a change
+ * of the monitored file. Thus it is well suited for testing reloading
+ * operations on file-based configurations.
+ *
+ * @version $Id$
+ */
+public class FileAlwaysReloadingStrategy extends FileChangedReloadingStrategy
+{
+    /**
+     * Checks whether a reload is necessary. This implementation returns always
+     * <b>true</b>.
+     *
+     * @return a flag whether a reload is required
+     */
+    public boolean reloadingRequired()
+    {
+        return true;
+    }
+
+    /**
+     * Returns the file that is watched by this strategy.
+     *
+     * @return the monitored file
+     */
+    public File getMonitoredFile()
+    {
+        return getFile();
+    }
+}

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/reloading/FileAlwaysReloadingStrategy.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org