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].

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

Reply via email to