apache/struts — pull request #6 by aafly (2014-03-17 09:37:36+00:00)
Title: loadedFileUrls only contains the last one of urls with same file name

In XmlConfigurationProvider, the field `loadedFileUrls` contains the xml files loaded. The loaded files will be checked if they are modified for configuration reloading.
```java
public boolean needsReload() {

for (String url : loadedFileUrls) {
if (fileManager.fileNeedsReloading(url)) {
return true;
}
}
return false;
}
```
But in method `private List loadConfigurationFiles(String fileName, Element includeElement) `, after the `while (urls.hasNext())` loop, the variable `url` is assigned by the last one of urls with same file name.

So when `loadedFileUrls.add(url.toString());` is called in the `for (Document doc : docs)` loop, only *THE LAST ONE* is added to loadedFileUrls.

I wrote a demo. I set `
`. I wrote two configuration files: `struts-plugin.xml` and `struts-biz.xml` in my web project. I use struts plugins such as `struts-spring-plugin`, `struts-json-plugin` and so on.

The reloading works when I changed the file `struts-biz.xml` in my project. But it does not work when I changed `struts-plugin.xml` in my project. I debug XmlConfigurationProvider and see only the `struts-plugin.xml` in struts-spring-plugin is contained in loadedFileUrls.

I tried to fix it by moving the `loadedFileUrls.add(url.toString());` into the `while (urls.hasNext())` loop.