Update of /cvsroot/springnet/Spring.Net/examples/Spring/Spring.IocQuickStart.MovieFinder/src/MovieFinder
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv14517/MovieFinder
Modified Files:
AppContext.xml Program.cs
Added Files:
AppContextContribution.xml
Log Message:
update MovieFinder example to show progammatic configuration of the container.
Index: AppContext.xml
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/examples/Spring/Spring.IocQuickStart.MovieFinder/src/MovieFinder/AppContext.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** AppContext.xml 30 Nov 2006 21:00:37 -0000 1.1
--- AppContext.xml 4 Jan 2008 22:38:58 -0000 1.2
***************
*** 5,21 ****
<object id="MyMovieLister"
type="Spring.IocQuickStart.MovieFinder.MovieLister, Spring.IocQuickStart.MovieFinder">
! <property name="movieFinder" ref="MyMovieFinder"/>
</object>
<!--
- An IMovieFinder implementation that uses harcoded values as it's movie source...
- -->
<object id="MyMovieFinder"
! type="Spring.IocQuickStart.MovieFinder.SimpleMovieFinder, Spring.IocQuickStart.MovieFinder"/>
! <!--
! An IMovieFinder implementation that uses a text file as it's movie source...
-->
<object id="AnotherMovieFinder"
type="Spring.IocQuickStart.MovieFinder.ColonDelimitedMovieFinder, Spring.IocQuickStart.MovieFinder">
<constructor-arg index="0" value="movies.txt"/>
</object>
</objects>
--- 5,25 ----
<object id="MyMovieLister"
type="Spring.IocQuickStart.MovieFinder.MovieLister, Spring.IocQuickStart.MovieFinder">
! <property name="movieFinder" ref="AnotherMovieFinder"/>
</object>
+
+
+ <!-- An IMovieFinder implementation that uses harcoded values as it's movie source... -->
<!--
<object id="MyMovieFinder"
! type="Spring.IocQuickStart.MovieFinder.SimpleMovieFinder, Spring.IocQuickStart.MovieFinder"/>
-->
+
+
+ <!--An IMovieFinder implementation that uses a text file as it's movie source... -->
+
<object id="AnotherMovieFinder"
type="Spring.IocQuickStart.MovieFinder.ColonDelimitedMovieFinder, Spring.IocQuickStart.MovieFinder">
<constructor-arg index="0" value="movies.txt"/>
</object>
+
</objects>
Index: Program.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/examples/Spring/Spring.IocQuickStart.MovieFinder/src/MovieFinder/Program.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Program.cs 30 Nov 2006 21:00:39 -0000 1.1
--- Program.cs 4 Jan 2008 22:38:58 -0000 1.2
***************
*** 22,29 ****
using System;
!
using Common.Logging;
using Spring.Context;
using Spring.Context.Support;
#endregion
--- 22,33 ----
using System;
! using System.Collections.Specialized;
using Common.Logging;
+ using Common.Logging.Log4Net;
using Spring.Context;
using Spring.Context.Support;
+ using Spring.Objects.Factory.Config;
+ using Spring.Objects.Factory.Support;
+ using Spring.Objects.Factory.Xml;
#endregion
***************
*** 56,64 ****
try
{
! // Retrieve context defined in the spring/context section of
! // the standard .NET configuration file.
! IApplicationContext ctx = ContextRegistry.GetContext();
! MovieLister lister = (MovieLister) ctx.GetObject("MyMovieLister");
Movie[] movies = lister.MoviesDirectedBy("Roberto Benigni");
LOG.Debug("Searching for movie...");
--- 60,70 ----
try
{
! IApplicationContext ctx =
! CreateContextMixXmlAndProgrammatic();
! //CreateContextProgrammatically();
! //CreateContextFromAppConfig();
! //CreateContextProgrammaticallyWithAutoWire();
! MovieLister lister = (MovieLister) ctx.GetObject("MyMovieLister");
Movie[] movies = lister.MoviesDirectedBy("Roberto Benigni");
LOG.Debug("Searching for movie...");
***************
*** 82,85 ****
--- 88,178 ----
}
}
+
+ private static IApplicationContext CreateContextFromAppConfig()
+ {
+ // Retrieve context defined in the spring/context section of
+ // the standard .NET configuration file.
+ return ContextRegistry.GetContext();
+ }
+
+ private static IApplicationContext CreateContextProgrammatically()
+ {
+ InitializeCommonLogging();
+ GenericApplicationContext ctx = new GenericApplicationContext();
+
+ IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory();
+
+
+ //Create MovieLister and dependency on
+ ObjectDefinitionBuilder builder =
+ ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(MovieLister));
+ builder.AddPropertyReference("MovieFinder", "AnotherMovieFinder");
+
+ ctx.RegisterObjectDefinition("MyMovieLister", builder.ObjectDefinition);
+
+ builder = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ColonDelimitedMovieFinder));
+ builder.AddConstructorArg("movies.txt");
+ ctx.RegisterObjectDefinition("AnotherMovieFinder", builder.ObjectDefinition);
+
+ ctx.Refresh();
+
+ return ctx;
+
+ }
+
+ private static IApplicationContext CreateContextProgrammaticallyWithAutoWire()
+ {
+ InitializeCommonLogging();
+ GenericApplicationContext ctx = new GenericApplicationContext();
+
+ IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory();
+
+
+ //Create MovieLister and dependency on
+ ObjectDefinitionBuilder builder =
+ ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(MovieLister));
+ builder.AddPropertyReference("MovieFinder", "BogusNameOfDependency")
+ .SetAutowireMode(AutoWiringMode.ByType);
+
+ ctx.RegisterObjectDefinition("MyMovieLister", builder.ObjectDefinition);
+
+ builder = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ColonDelimitedMovieFinder));
+ builder.AddConstructorArg("movies.txt")
+ .SetAutowireMode(AutoWiringMode.ByType);
+
+ ctx.RegisterObjectDefinition("AnotherMovieFinder", builder.ObjectDefinition);
+
+ ctx.Refresh();
+
+ return ctx;
+
+ }
+
+ private static IApplicationContext CreateContextMixXmlAndProgrammatic()
+ {
+
+ GenericApplicationContext ctx = new GenericApplicationContext();
+
+ IObjectDefinitionReader objectDefinitionReader = new XmlObjectDefinitionReader(ctx);
+ objectDefinitionReader.LoadObjectDefinitions("assembly://Spring.IocQuickStart.MovieFinder/Spring.IocQuickStart.MovieFinder/AppContextContribution.xml");
+
+ IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory();
+ ObjectDefinitionBuilder builder =
+ ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ColonDelimitedMovieFinder));
+ builder.AddConstructorArg("movies.txt");
+ ctx.RegisterObjectDefinition("AnotherMovieFinder", builder.ObjectDefinition);
+
+
+ ctx.Refresh();
+
+ return ctx;
+ }
+
+ private static void InitializeCommonLogging()
+ {
+ NameValueCollection properties = new NameValueCollection();
+ properties["configType"] = "INLINE";
+ LogManager.Adapter = new Log4NetLoggerFactoryAdapter(properties);
+ }
}
}
\ No newline at end of file
--- NEW FILE: AppContextContribution.xml ---
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" >
<description>An example that demonstrates contributing on implementation of MovieFinder progammatically.</description>
<object id="MyMovieLister"
type="Spring.IocQuickStart.MovieFinder.MovieLister, Spring.IocQuickStart.MovieFinder">
<property name="movieFinder" ref="AnotherMovieFinder"/>
</object>
</objects>
|