/**
  * Starts parsing.
  *
  * @param attrs the attributes.
  * @throws SAXException if there is a parsing error.
  */
 protected void startParsing(final Attributes attrs) throws SAXException {
   super.startParsing(attrs);
   propertyName = attrs.getValue(getUri(), "name");
   if (propertyName == null) {
     throw new ParseException("Required attribute 'name' is null.", getLocator());
   }
 }
 /**
  * Done parsing.
  *
  * @throws SAXException if there is a parsing error.
  */
 protected void doneParsing() throws SAXException {
   final DriverDataSourceProvider provider = new DriverDataSourceProvider();
   if (driverReadHandler != null) {
     provider.setDriver(driverReadHandler.getResult());
   }
   if (urlReadHandler != null) {
     provider.setUrl(urlReadHandler.getResult());
   }
   if (propertiesReadHandler != null) {
     final Properties p = (Properties) propertiesReadHandler.getObject();
     final Iterator it = p.entrySet().iterator();
     while (it.hasNext()) {
       final Map.Entry entry = (Map.Entry) it.next();
       provider.setProperty((String) entry.getKey(), (String) entry.getValue());
     }
   }
   driverConnectionProvider = provider;
 }
 /**
  * Done parsing.
  *
  * @throws SAXException if there is a parsing error.
  */
 protected void doneParsing() throws SAXException {
   super.doneParsing();
   value = ObjectConverterFactory.convert(componentType, getResult(), getLocator());
 }