All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jvnet.jaxbvalidation.handler.DispatchingValidationEventHandler Maven / Gradle / Ivy

There is a newer version: 1.0.5.4
Show newest version
package org.jvnet.jaxbvalidation.handler;

import org.apache.commons.collections.MultiHashMap;
import org.apache.commons.collections.MultiMap;

import javax.xml.bind.ValidationEvent;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.bind.ValidationEventLocator;
import java.util.Collection;
import java.util.Iterator;

/**
 * Dispatching validation event handler routes events to the interested listeners.
 *
 * @author Aleksei Valikov
 */
public class DispatchingValidationEventHandler implements ValidationEventHandler, ValidationEventDispatcher
{
  /**
   * Map of registered handlers.
   */
  protected MultiMap handlersMap = new MultiHashMap();

  public void registerValidationEventHandler(final ValidationEventLocator locator, final ValidationEventHandler handler)
  {
    handlersMap.put(locator, handler);
  }

  public void unregisterValidationEventHandler(final ValidationEventLocator locator, final ValidationEventHandler handler)
  {
    handlersMap.remove(locator, handler);
  }

  public boolean handleEvent(final ValidationEvent event)
  {
    final Collection listeners = (Collection) handlersMap.get(event.getLocator());
    if (null != listeners)
    {
      for (Iterator iterator = listeners.iterator(); iterator.hasNext();)
      {
        final ValidationEventHandler handler = (ValidationEventHandler) iterator.next();
        handler.handleEvent(event);
      }
    }
    return true;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy