#region License
/*
* Copyright 2002-2005 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 System;
using Spring.Objects.Factory.Config;
using Spring.Objects.Factory.Xml;
using Spring.Util;
#endregion
namespace Spring.Objects.Factory.Config{
/// <summary>
/// Holder for an <see cref="Spring.Objects.Factory.Config.IObjectDefinition"/> with
/// name and aliases.
/// </summary>
/// <remarks>
/// <p>
/// Recognized by
/// <see cref="Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory"/>
/// for inner object definitions. Registered by
/// <see cref="ObjectsNamespaceParser"/>,
/// which also uses it as general holder for a parsed object definition.
/// </p>
/// <p>
/// Can also be used for programmatic registration of inner object
/// definitions. If you don't care about the functionality offered by the
/// <see cref="Spring.Objects.Factory.IObjectNameAware"/> interface and the like,
/// registering <see cref="Spring.Objects.Factory.Support.RootObjectDefinition"/>
/// or <see cref="Spring.Objects.Factory.Support.ChildObjectDefinition"/> is good enough.
/// </p>
/// </remarks>
/// <author>Juergen Hoeller</author>
/// <author>Simon White (.NET)</author>
[Serializable]
public class ObjectDefinitionHolder
{
private IObjectDefinition objectDefinition;
private string objectName;
private string[] aliases;
#region Constructor () / Destructor
/// <summary>
/// Creates a new instance of the
/// <see cref="ObjectDefinitionHolder"/> class.
/// </summary>
/// <param name="definition">
/// The object definition to be held by this instance.
/// </param>
/// <param name="name">
/// The name of the object definition.
/// </param>
public ObjectDefinitionHolder(IObjectDefinition definition, string name)
: this(definition, name, StringUtils.EmptyStrings)
{
}
/// <summary>
/// Creates a new instance of the
/// <see cref="ObjectDefinitionHolder"/> class.
/// </summary>
/// <param name="definition">
/// The object definition to be held by this instance.
/// </param>
/// <param name="name">The name of the object.</param>
/// <param name="aliases">
/// Any aliases for the supplied <paramref name="definition"/>
/// </param>
public ObjectDefinitionHolder(
IObjectDefinition definition, string name, string[] aliases)
{
this.objectDefinition = definition;
this.objectName = name;
this.aliases = aliases == null ? StringUtils.EmptyStrings : aliases;
}
#endregion
#region Properties
/// <summary>
/// The <see cref="Spring.Objects.Factory.Config.IObjectDefinition"/> held by this
/// instance.
/// </summary>
public IObjectDefinition ObjectDefinition
{
get { return objectDefinition; }
}
/// <summary>
/// The name of the object definition.
/// </summary>
public string ObjectName
{
get { return objectName; }
}
/// <summary>
/// Any aliases for the object definition.
/// </summary>
/// <remarks>
/// <p>
/// Guaranteed to never return <cref lang="null"/>; if the associated
/// <see cref="ObjectDefinition"/>
/// does not have any aliases associated with it, then an empty
/// <see cref="System.String"/> array will be returned.
/// </p>
/// </remarks>
public string[] Aliases
{
get { return aliases; }
}
#endregion
}
}
|