EventListenerParameters.java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.commons.configuration2.builder;
- import java.util.Collections;
- import java.util.Map;
- import org.apache.commons.configuration2.event.Event;
- import org.apache.commons.configuration2.event.EventListener;
- import org.apache.commons.configuration2.event.EventListenerList;
- import org.apache.commons.configuration2.event.EventListenerRegistrationData;
- import org.apache.commons.configuration2.event.EventType;
- /**
- * <p>
- * A specialized parameters implementation for {@link BasicConfigurationBuilder} which allows for a convenient event
- * listener initialization.
- * </p>
- * <p>
- * This class offers a fluent interface for registering event listeners. A fully initialized instance can be passed to
- * the {@link BasicConfigurationBuilder#configure(BuilderParameters...)} method. All event listeners which have been
- * registered at the instance are then copied over to the configuration builder.
- * </p>
- * <p>
- * The code fragment below shows a typical usage scenario:
- * </p>
- *
- * <pre>
- * BasicConfigurationBuilder<Configuration> builder = new BasicConfigurationBuilder<Configuration>(PropertiesConfiguration.class)
- * .configure(new EventListenerParameters().addEventListener(ConfigurationEvent.ANY, myListener));
- * </pre>
- *
- * <p>
- * In order to support a configuration builder's {@code configure()} method, this class implements the
- * {@code BuilderParameters} interface. However, this is just a dummy implementation; no parameters are propagated to
- * the builder.
- * </p>
- *
- * @since 2.0
- */
- public class EventListenerParameters implements BuilderParameters, EventListenerProvider {
- /** Stores the event listener registrations added to this object. */
- private final EventListenerList eventListeners;
- /**
- * Creates a new instance of {@code EventListenerParameters}.
- */
- public EventListenerParameters() {
- eventListeners = new EventListenerList();
- }
- /**
- * Adds the specified {@code EventListenerRegistrationData} instance to this object.
- *
- * @param registrationData the registration object to be added
- * @param <T> the event type of the contained event listener
- * @return a reference to this object for method chaining
- */
- public <T extends Event> EventListenerParameters addEventListener(final EventListenerRegistrationData<T> registrationData) {
- eventListeners.addEventListener(registrationData);
- return this;
- }
- /**
- * Adds an event listener of the specified event type to this object.
- *
- * @param eventType the event type object
- * @param listener the event listener
- * @param <T> the event type
- * @return a reference to this object for method chaining
- */
- public <T extends Event> EventListenerParameters addEventListener(final EventType<T> eventType, final EventListener<? super T> listener) {
- eventListeners.addEventListener(eventType, listener);
- return this;
- }
- @Override
- public EventListenerList getListeners() {
- return eventListeners;
- }
- /**
- * {@inheritDoc} This implementation returns an empty map.
- */
- @Override
- public Map<String, Object> getParameters() {
- return Collections.emptyMap();
- }
- }