*/
protected void loadDataSourceType(Element dstElement, String sName)
{
XMLMetadataHelper.verifyRootElement(dstElement, "DataSourceType");
final DataSourceType type = new DataSourceType(sName);
type.setMetadata(m_metadata);
type.setLoader(m_helper.getClassObject(XMLUtil.getReqStringAttr(dstElement, "loader")));
String sExporter = XMLUtil.getStringAttr(dstElement, "exporter");
if (sExporter != null)
{
type.setExporter(m_helper.getClassObject(sExporter));
}
String sElement = XMLUtil.getReqStringAttr(dstElement, "element");
XMLMetadataHelper.validateName(sElement);
m_metadata.addDataSourceTypeElement(sElement, type);
XMLUtil.withFirstChildElement(dstElement, "Adapters", false, new ElementHandler()
{
public void handleElement(Element adaptersElement)
{
XMLUtil.forEachChildElement(adaptersElement, "Adapter",
m_helper.new ElementHandler("adapter")
{
public void handleElement(Element adapterElement, String sAdapterName)
{
DataSourceAdapter adapter = new DataSourceAdapter(sAdapterName);
try
{
adapter.setType(type);
adapter.setClassObject(m_helper.getClassObject(XMLUtil.getReqStringAttr(adapterElement, "class")));
adapter.setVersion(XMLUtil.getStringAttr(adapterElement, "version"));
type.addAdapter(adapter);
}
catch (MetadataException e)
{
if (!(e.getCause() instanceof ClassNotFoundException) &&
!(e.getCause() instanceof NoClassDefFoundError))