/**
   * Parses the given set of input stream representing XML constraint mappings.
   *
   * @param mappingStreams The streams to parse. Must support the mark/reset contract.
   */
  public final void parse(Set<InputStream> mappingStreams) {

    try {
      JAXBContext jc = JAXBContext.newInstance(ConstraintMappingsType.class);

      for (InputStream in : mappingStreams) {

        String schemaVersion = xmlParserHelper.getSchemaVersion("constraint mapping file", in);
        String schemaResourceName = getSchemaResourceName(schemaVersion);
        Schema schema = xmlParserHelper.getSchema(schemaResourceName);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setSchema(schema);

        ConstraintMappingsType mapping = getValidationConfig(in, unmarshaller);
        String defaultPackage = mapping.getDefaultPackage();

        parseConstraintDefinitions(mapping.getConstraintDefinition(), defaultPackage);

        for (BeanType bean : mapping.getBean()) {
          Class<?> beanClass = getClass(bean.getClazz(), defaultPackage);
          checkClassHasNotBeenProcessed(processedClasses, beanClass);
          annotationProcessingOptions.ignoreAnnotationConstraintForClass(
              beanClass, bean.getIgnoreAnnotations());
          parseClassLevelOverrides(bean.getClassType(), beanClass, defaultPackage);
          parseFieldLevelOverrides(bean.getField(), beanClass, defaultPackage);
          parsePropertyLevelOverrides(bean.getGetter(), beanClass, defaultPackage);
          processedClasses.add(beanClass);
        }
      }
    } catch (JAXBException e) {
      throw log.getErrorParsingMappingFileException(e);
    }
  }
  public final void parse(Set<InputStream> mappingStreams) {
    for (InputStream in : mappingStreams) {
      ConstraintMappingsType mapping = getValidationConfig(in);
      String defaultPackage = mapping.getDefaultPackage();

      parseConstraintDefinitions(mapping.getConstraintDefinition(), defaultPackage);

      for (BeanType bean : mapping.getBean()) {
        Class<?> beanClass = getClass(bean.getClazz(), defaultPackage);
        checkClassHasNotBeenProcessed(processedClasses, beanClass);
        annotationIgnores.setDefaultIgnoreAnnotation(beanClass, bean.getIgnoreAnnotations());
        parseClassLevelOverrides(bean.getClassType(), beanClass, defaultPackage);
        parseFieldLevelOverrides(bean.getField(), beanClass, defaultPackage);
        parsePropertyLevelOverrides(bean.getGetter(), beanClass, defaultPackage);
        processedClasses.add(beanClass);
      }
    }
  }