refactoring for easier subclassing
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
index 0b8ee5d..b7b34c7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
@@ -18,9 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.server;
 
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.DataChannelFilter;
@@ -46,6 +43,9 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.util.Collection;
+import java.util.List;
+
 /**
  * A {@link DataChannel} provider that provides a single instance of DataDomain
  * configured per configuration supplied via injected
@@ -104,18 +104,7 @@
 
 	protected DataDomain createAndInitDataDomain() throws Exception {
 
-		DataChannelDescriptor descriptor;
-
-		if (locations.isEmpty()) {
-			descriptor = new DataChannelDescriptor();
-		} else {
-			descriptor = descriptorFromConfigs();
-		}
-
-		String nameOverride = runtimeProperties.get(Constants.SERVER_DOMAIN_NAME_PROPERTY);
-		if (nameOverride != null) {
-			descriptor.setName(nameOverride);
-		}
+		DataChannelDescriptor descriptor = loadDescriptor();
 
 		DataDomain dataDomain = createDataDomain(descriptor.getName());
 
@@ -167,6 +156,20 @@
 
 	/**
 	 * @since 4.0
+     */
+	protected DataChannelDescriptor loadDescriptor() {
+		DataChannelDescriptor descriptor = locations.isEmpty() ? new DataChannelDescriptor() : loadDescriptorFromConfigs();
+
+		String nameOverride = runtimeProperties.get(Constants.SERVER_DOMAIN_NAME_PROPERTY);
+		if (nameOverride != null) {
+			descriptor.setName(nameOverride);
+		}
+
+		return descriptor;
+	}
+
+	/**
+	 * @since 4.0
 	 */
 	protected DataNode addDataNode(DataDomain dataDomain, DataNodeDescriptor nodeDescriptor) throws Exception {
 		DataNode dataNode = dataNodeFactory.createDataNode(nodeDescriptor);
@@ -180,7 +183,7 @@
 		return dataNode;
 	}
 
-	private DataChannelDescriptor descriptorFromConfigs() {
+	private DataChannelDescriptor loadDescriptorFromConfigs() {
 
 		long t0 = System.currentTimeMillis();