1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.configuration2.builder; 18 19 import org.apache.commons.configuration2.ImmutableConfiguration; 20 import org.apache.commons.configuration2.event.EventType; 21 22 /** 23 * <p> 24 * A specialized event class which is generated by a {@link ConfigurationBuilder} when a result configuration has been 25 * created. 26 * </p> 27 * <p> 28 * Events of this type are fired in the {@code getConfiguration()} method of a configuration builder each time a new 29 * result object is created. At the time the event is fired, no lock is held. The newly created 30 * {@code ImmutableConfiguration} object is available as a property of this event. 31 * </p> 32 * <p> 33 * A use case for this event is to perform special initializations on newly created configuration objects. It is also an 34 * indication that a builder is now fully initialized; i.e. the managed configuration is available. 35 * </p> 36 * 37 * @since 2.0 38 */ 39 public class ConfigurationBuilderResultCreatedEvent extends ConfigurationBuilderEvent { 40 41 /** 42 * The specialized event type for a newly created result configuration. Events of this type are generated by a 43 * configuration builder when a result configuration has been created. 44 */ 45 public static final EventType<ConfigurationBuilderResultCreatedEvent> RESULT_CREATED = new EventType<>(ANY, "RESULT_CREATED"); 46 47 // SpotBugs 48 // [ERROR] Medium: Class org.apache.commons.configuration2.builder.ConfigurationBuilderResultCreatedEvent defines 49 // non-transient non-serializable instance field configuration 50 // [org.apache.commons.configuration2.builder.ConfigurationBuilderResultCreatedEvent] In 51 // ConfigurationBuilderResultCreatedEvent.java SE_BAD_FIELD 52 // 53 // private static final long serialVersionUID = 1L; 54 55 /** The newly created configuration object. */ 56 private final ImmutableConfiguration configuration; 57 58 /** 59 * Creates a new instance of {@code ConfigurationBuilderResultCreatedEvent} and initializes its properties. 60 * 61 * @param source the {@code ConfigurationBuilder} object which triggered this event (must not be <b>null</b>) 62 * @param evType the type of this event (must not be <b>null</b>) 63 * @param createdConfiguration the newly created {@code ImmutableConfiguration} object (must not be <b>null</b>) 64 * @throws IllegalArgumentException if a required parameter is null 65 */ 66 public ConfigurationBuilderResultCreatedEvent(final ConfigurationBuilder<?> source, 67 final EventType<? extends ConfigurationBuilderResultCreatedEvent> evType, final ImmutableConfiguration createdConfiguration) { 68 super(source, evType); 69 if (createdConfiguration == null) { 70 throw new IllegalArgumentException("Configuration must not be null!"); 71 } 72 configuration = createdConfiguration; 73 } 74 75 /** 76 * Gets the newly created {@code ImmutableConfiguration} object. 77 * 78 * @return the newly created {@code ImmutableConfiguration} 79 */ 80 public ImmutableConfiguration getConfiguration() { 81 return configuration; 82 } 83 }