Issue #1834 - Filter config file reads for xml only, wrap unmarshalling and log errors

Change-Id: I23829b764e1f52e9dee1a1d9701d219e949eb9fa

Former-commit-id: 0e1b566dd1 [formerly 1beb6e4fa5] [formerly 1958700112] [formerly 302dbf2cfb [formerly 1958700112 [formerly 5304de6fff49f3db7a3b46427077c7d2d9c0b3f9]]]
Former-commit-id: 302dbf2cfb
Former-commit-id: 44a7dc0c858099a53c302c46a726f699843c6b9e [formerly 3d1c1b146c]
Former-commit-id: c143b356ef
This commit is contained in:
Mike Duff 2013-03-27 10:38:59 -05:00
parent 55572918b3
commit be438c6fec

View file

@ -37,6 +37,7 @@ import com.raytheon.uf.common.localization.LocalizationContext;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType; import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
import com.raytheon.uf.common.localization.LocalizationFile; import com.raytheon.uf.common.localization.LocalizationFile;
import com.raytheon.uf.common.localization.PathManagerFactory; import com.raytheon.uf.common.localization.PathManagerFactory;
import com.raytheon.uf.common.localization.exception.LocalizationException;
import com.raytheon.uf.common.serialization.JAXBManager; import com.raytheon.uf.common.serialization.JAXBManager;
import com.raytheon.uf.common.stats.xml.StatisticsAggregate; import com.raytheon.uf.common.stats.xml.StatisticsAggregate;
import com.raytheon.uf.common.stats.xml.StatisticsConfig; import com.raytheon.uf.common.stats.xml.StatisticsConfig;
@ -44,6 +45,7 @@ import com.raytheon.uf.common.stats.xml.StatisticsEvent;
import com.raytheon.uf.common.stats.xml.StatisticsGroup; import com.raytheon.uf.common.stats.xml.StatisticsGroup;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.util.ReflectionException; import com.raytheon.uf.common.util.ReflectionException;
import com.raytheon.uf.common.util.ReflectionUtil; import com.raytheon.uf.common.util.ReflectionUtil;
@ -59,6 +61,8 @@ import com.raytheon.uf.common.util.ReflectionUtil;
* Nov 07, 2012 1317 mpduff Update config files. * Nov 07, 2012 1317 mpduff Update config files.
* Nov 29, 2012 1350 rjpeter Updated to static, fixed localization, increased validation. * Nov 29, 2012 1350 rjpeter Updated to static, fixed localization, increased validation.
* Jan 15, 2013 1487 djohnson Make validate() static and public, so it can be run independently. * Jan 15, 2013 1487 djohnson Make validate() static and public, so it can be run independently.
* Mar 27, 2013 1834 mpduff Filter for xml files on localization file read, wrap unmarshall and
* log error if one occurs
* </pre> * </pre>
* *
* @author jsanchez * @author jsanchez
@ -123,11 +127,12 @@ public class ConfigLoader {
LocalizationContext[] searchContext = pm LocalizationContext[] searchContext = pm
.getLocalSearchHierarchy(LocalizationType.COMMON_STATIC); .getLocalSearchHierarchy(LocalizationType.COMMON_STATIC);
Map<String, LocalizationFile> statConfs = new HashMap<String, LocalizationFile>(); Map<String, LocalizationFile> statConfs = new HashMap<String, LocalizationFile>();
String[] extensions = new String[] { ".xml" };
// grab all stats from contexts, allowing overwrite by name // grab all stats from contexts, allowing overwrite by name
for (LocalizationContext ctx : searchContext) { for (LocalizationContext ctx : searchContext) {
LocalizationFile[] localizationFiles = pm.listFiles(ctx, STATS_DIR, LocalizationFile[] localizationFiles = pm.listFiles(ctx, STATS_DIR,
null, false, true); extensions, false, true);
for (LocalizationFile lf : localizationFiles) { for (LocalizationFile lf : localizationFiles) {
String name = lf.getName(); String name = lf.getName();
if (!statConfs.containsKey(name)) { if (!statConfs.containsKey(name)) {
@ -142,13 +147,18 @@ public class ConfigLoader {
Map<String, StatisticsEvent> myEvents = new HashMap<String, StatisticsEvent>(); Map<String, StatisticsEvent> myEvents = new HashMap<String, StatisticsEvent>();
for (LocalizationFile lf : statConfs.values()) { for (LocalizationFile lf : statConfs.values()) {
StatisticsConfig config = lf.jaxbUnmarshal( try {
StatisticsConfig.class, jaxbManager); StatisticsConfig config = lf.jaxbUnmarshal(
if (config != null) { StatisticsConfig.class, jaxbManager);
validate(myEvents, config); if (config != null) {
if (!config.getEvents().isEmpty()) { validate(myEvents, config);
myConfigurations.add(config); if (!config.getEvents().isEmpty()) {
myConfigurations.add(config);
}
} }
} catch (LocalizationException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to open file [" + lf.getName() + "]", e);
} }
} }