+ ///
+ /// This method is never invoked if the parser is namespace aware
+ /// and was called to process the root node.
+ ///
+ ///
+ IObjectDefinition IObjectDefinitionParser.ParseElement(XmlElement element, ParserContext parserContext)
+ {
+ AssertUtils.ArgumentNotNull(parserContext, "parserContext");
+
+ string id = element.GetAttribute(ObjectDefinitionConstants.IdAttribute);
+ string unresolvedChannelType = element.GetAttribute(ChannelTypeAttribute);
+ string endpointConfigurationName = element.GetAttribute(EndpointConfigurationNameAttribute);
+
+ IObjectDefinition channelFactoryDefinition;
+ try
+ {
+ Type channelType = TypeResolutionUtils.ResolveType(unresolvedChannelType);
+ Type channelFactoryType = typeof(ChannelFactoryObject<>).MakeGenericType(new Type[1] { channelType });
+ channelFactoryDefinition = new RootObjectDefinition(channelFactoryType);
+ }
+ catch
+ {
+ // Try to resolve type later (Can be a type alias)
+ channelFactoryDefinition = new RootObjectDefinition(
+ String.Format("Spring.ServiceModel.ChannelFactoryObject<{0}>, Spring.Services", unresolvedChannelType),
+ new ConstructorArgumentValues(),
+ new MutablePropertyValues());
+ }
+
+ if (!StringUtils.HasText(id))
+ {
+ id = parserContext.ReaderContext.GenerateObjectName(channelFactoryDefinition);
+ }
+
+ channelFactoryDefinition.ConstructorArgumentValues.AddNamedArgumentValue("endpointConfigurationName", endpointConfigurationName);
+
+ foreach (PropertyValue pv in base.ParsePropertyElements(id, element, parserContext))
+ {
+ channelFactoryDefinition.PropertyValues.Add(pv);
+ }
+
+ parserContext.Registry.RegisterObjectDefinition(id, channelFactoryDefinition);
+
+ return null;
+ }
+
+ #endregion
+ }
+}
+#endif
\ No newline at end of file
diff --git a/src/Spring/Spring.Services/ServiceModel/Config/WcfNamespaceParser.cs b/src/Spring/Spring.Services/ServiceModel/Config/WcfNamespaceParser.cs
new file mode 100644
index 00000000..a6c1ad1d
--- /dev/null
+++ b/src/Spring/Spring.Services/ServiceModel/Config/WcfNamespaceParser.cs
@@ -0,0 +1,55 @@
+#if NET_3_0
+#region License
+
+/*
+ * Copyright 2002-2010 the original author or authors.
+ *
+ * Licensed 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.
+ */
+
+#endregion
+
+#region Imports
+
+using Spring.Objects.Factory.Xml;
+
+#endregion
+
+namespace Spring.ServiceModel.Config
+{
+ ///