
com.workday.autoparse.xml.context.XmlParserContext Maven / Gradle / Ivy
/*
* Copyright 2015 Workday, Inc.
*
* This software is available under the MIT license.
* Please see the LICENSE.txt file in this project.
*/
package com.workday.autoparse.xml.context;
import com.workday.autoparse.xml.parser.CompositeParserMap;
import com.workday.autoparse.xml.parser.GeneratedClassNames;
import com.workday.autoparse.xml.parser.KeyCollisionTester;
import com.workday.autoparse.xml.parser.ParserMap;
import com.workday.autoparse.xml.parser.XmlElementParser;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* A pojo that holds information needed by the tools invoked by the {@link XmlElementParser}s.
*
* @author nathan.taylor
* @since 2013-9-23
*/
public class XmlParserContext {
private final XmlParserSettings settings;
private final ParserMap parserMap;
public XmlParserContext(XmlParserSettings settings) {
this.settings = settings;
parserMap = constructParserMap(settings.getPartitionPackages());
}
public XmlParserSettings getSettings() {
return settings;
}
public ParserMap getParserMap() {
return parserMap;
}
private static ParserMap constructParserMap(Collection packageNames) {
if (packageNames.size() == 1) {
return getParserMapInstance(packageNames.iterator().next());
}
final List components = new ArrayList<>();
for (String packageName : packageNames) {
components.add(getParserMapInstance(packageName));
}
KeyCollisionTester.validateMaps(components);
return new CompositeParserMap(components);
}
private static ParserMap getParserMapInstance(String packageName) {
try {
String parserMapSimpleName = GeneratedClassNames
.CLASS_GENERATED_PARSER_MAP;
String parserMapFullName = GeneratedClassNames.getQualifiedName(packageName,
parserMapSimpleName);
return (ParserMap) Class.forName(parserMapFullName).newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy