On Wed, Oct 3, 2012 at 2:54 PM, Oliver Heger <oliver.he...@oliver-heger.de> wrote: > Hi Matt, > > Am 03.10.2012 21:25, schrieb Matt Benson: > >> If [configuration] depends on [lang] already, presumably this new >> version should depend on [lang] 3.x instead; in which case why not use >> its Builder interface? > > > Yes, we are going to switch to [lang] 3.x. I would like to use the Builder > interface, but there are some open points: > > - Currently the builder method in ConfigurationBuilder throws a checked > exception. It still has to be discussed whether in [configuration] 2.0 > checked exceptions should be replaced by runtime exceptions. > - Switching the dependency to [lang] 3.x is one reason for a major release > of [configuration]: Because classes of [lang] are exposed in the public API > of [configuration], it is not possible to update the dependency in a binary > compatible way. So it was said that such direct references should be avoided > in future. I fear it would then not be possible to let classes in > [configuration] implement an interface from [lang]. >
This last is sensible enough; thanks! Matt > Oliver > >> >> $0.02, >> Matt >> >> On Wed, Oct 3, 2012 at 2:15 PM, <ohe...@apache.org> wrote: >>> >>> Author: oheger >>> Date: Wed Oct 3 19:15:27 2012 >>> New Revision: 1393690 >>> >>> URL: http://svn.apache.org/viewvc?rev=1393690&view=rev >>> Log: >>> Added ConfigurationBuilder interface. >>> >>> Added: >>> >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ >>> >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> (with props) >>> >>> Added: >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> URL: >>> http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java?rev=1393690&view=auto >>> >>> ============================================================================== >>> --- >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> (added) >>> +++ >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> Wed Oct 3 19:15:27 2012 >>> @@ -0,0 +1,50 @@ >>> +/* >>> + * 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.configuration.builder; >>> + >>> +import org.apache.commons.configuration.Configuration; >>> +import org.apache.commons.configuration.ConfigurationException; >>> + >>> +/** >>> + * <p> >>> + * Definition of an interface for objects that can create {@link >>> Configuration} >>> + * objects of a specific type. >>> + * </p> >>> + * <p> >>> + * This interface defines an abstract way of creating a {@code >>> Configuration} >>> + * object. It does not assume any specific way of how this is done; this >>> is >>> + * completely in the responsibility of an implementation class. There is >>> just a >>> + * single method that returns the configuration constructed by this >>> builder. >>> + * </p> >>> + * >>> + * @version $Id$ >>> + * @since 2.0 >>> + * @param <T> the concrete type of the {@code Configuration} class >>> produced by >>> + * this builder >>> + */ >>> +public interface ConfigurationBuilder<T extends Configuration> >>> +{ >>> + /** >>> + * Returns the configuration provided by this builder. An >>> implementation has >>> + * to perform all necessary steps for creating and initializing a >>> + * {@code Configuration} object. >>> + * >>> + * @return the configuration >>> + * @throws ConfigurationException if an error occurs >>> + */ >>> + T getConfiguration() throws ConfigurationException; >>> +} >>> >>> Propchange: >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> >>> ------------------------------------------------------------------------------ >>> svn:eol-style = native >>> >>> Propchange: >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> >>> ------------------------------------------------------------------------------ >>> svn:keywords = Date Author Id Revision HeadURL >>> >>> Propchange: >>> commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/ConfigurationBuilder.java >>> >>> ------------------------------------------------------------------------------ >>> svn:mime-type = text/plain >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org