From 1dfdccb8118aeaa3cd844ac8de2a672c93312166 Mon Sep 17 00:00:00 2001 From: mokhan Date: Sat, 21 Feb 2009 21:44:27 +0000 Subject: git-svn-id: http://svn.xp-dev.com/svn/mokhan-sait@2 da190166-9cfc-4ee1-ae03-434a172be219 --- slips/Sait.Cmpp299.Assignment1.sln | 38 + slips/build/Marina.Build.csproj | 293 + slips/build/build.bat | 5 + slips/build/config/app.config.template | 29 + slips/build/config/log4net.config.xml.template | 18 + slips/build/config/windsor.config.xml.template | 116 + slips/build/lib/castle/bin/Castle.ActiveRecord.dll | Bin 0 -> 172032 bytes slips/build/lib/castle/bin/Castle.ActiveRecord.xml | 9091 ++++++ .../lib/castle/bin/Castle.Components.Binder.dll | Bin 0 -> 40960 bytes .../lib/castle/bin/Castle.Components.Binder.xml | 348 + .../bin/Castle.Components.Common.EmailSender.dll | Bin 0 -> 11264 bytes .../bin/Castle.Components.Common.EmailSender.xml | 205 + ...mmon.TemplateEngine.NVelocityTemplateEngine.dll | Bin 0 -> 9728 bytes ...mmon.TemplateEngine.NVelocityTemplateEngine.xml | 91 + .../Castle.Components.Common.TemplateEngine.dll | Bin 0 -> 5120 bytes .../Castle.Components.Common.TemplateEngine.xml | 54 + .../bin/Castle.Components.DictionaryAdapter.dll | Bin 0 -> 11776 bytes .../bin/Castle.Components.DictionaryAdapter.xml | 62 + .../lib/castle/bin/Castle.Components.Validator.dll | Bin 0 -> 57344 bytes .../lib/castle/bin/Castle.Components.Validator.pdb | Bin 0 -> 196096 bytes .../lib/castle/bin/Castle.Components.Validator.xml | 2938 ++ slips/build/lib/castle/bin/Castle.Core.dll | Bin 0 -> 61440 bytes slips/build/lib/castle/bin/Castle.Core.xml | 3049 ++ slips/build/lib/castle/bin/Castle.DynamicProxy.dll | Bin 0 -> 73728 bytes slips/build/lib/castle/bin/Castle.DynamicProxy.xml | 693 + .../build/lib/castle/bin/Castle.DynamicProxy2.dll | Bin 0 -> 98304 bytes .../build/lib/castle/bin/Castle.DynamicProxy2.xml | 635 + .../Castle.Facilities.ActiveRecordIntegration.dll | Bin 0 -> 28672 bytes .../Castle.Facilities.ActiveRecordIntegration.xml | 38 + ...e.Facilities.AutomaticTransactionManagement.dll | Bin 0 -> 13312 bytes ...e.Facilities.AutomaticTransactionManagement.xml | 131 + .../bin/Castle.Facilities.BatchRegistration.dll | Bin 0 -> 10752 bytes .../bin/Castle.Facilities.BatchRegistration.xml | 28 + .../lib/castle/bin/Castle.Facilities.Cache.dll | Bin 0 -> 12288 bytes .../lib/castle/bin/Castle.Facilities.Cache.xml | 141 + .../bin/Castle.Facilities.Db4oIntegration.dll | Bin 0 -> 10752 bytes .../bin/Castle.Facilities.Db4oIntegration.xml | 33 + .../castle/bin/Castle.Facilities.DynamicLoader.dll | Bin 0 -> 16896 bytes .../castle/bin/Castle.Facilities.DynamicLoader.xml | 205 + .../bin/Castle.Facilities.IBatisNetIntegration.dll | Bin 0 -> 13312 bytes .../bin/Castle.Facilities.IBatisNetIntegration.xml | 23 + .../lib/castle/bin/Castle.Facilities.Logging.dll | Bin 0 -> 11776 bytes .../lib/castle/bin/Castle.Facilities.Logging.xml | 75 + .../Castle.Facilities.NHibernateIntegration.dll | Bin 0 -> 53248 bytes .../Castle.Facilities.NHibernateIntegration.xml | 1882 ++ .../castle/bin/Castle.Facilities.Prevalence.dll | Bin 0 -> 10752 bytes .../castle/bin/Castle.Facilities.Prevalence.xml | 37 + .../Castle.Facilities.Remoting.TestComponents.dll | Bin 0 -> 6144 bytes .../Castle.Facilities.Remoting.TestComponents.xml | 8 + .../castle/bin/Castle.Facilities.Synchronize.dll | Bin 0 -> 19456 bytes .../castle/bin/Castle.Facilities.Synchronize.xml | 461 + slips/build/lib/castle/bin/Castle.MicroKernel.dll | Bin 0 -> 131072 bytes slips/build/lib/castle/bin/Castle.MicroKernel.xml | 3682 +++ .../bin/Castle.MonoRail.ActiveRecordScaffold.dll | Bin 0 -> 45056 bytes .../bin/Castle.MonoRail.ActiveRecordScaffold.xml | 208 + .../bin/Castle.MonoRail.ActiveRecordSupport.dll | Bin 0 -> 32768 bytes .../bin/Castle.MonoRail.ActiveRecordSupport.xml | 400 + .../Castle.MonoRail.Framework.Views.NVelocity.dll | Bin 0 -> 40960 bytes .../Castle.MonoRail.Framework.Views.NVelocity.xml | 389 + .../lib/castle/bin/Castle.MonoRail.Framework.dll | Bin 0 -> 655360 bytes .../lib/castle/bin/Castle.MonoRail.Framework.xml | 20332 +++++++++++++ .../lib/castle/bin/Castle.MonoRail.JSONSupport.dll | Bin 0 -> 5632 bytes .../lib/castle/bin/Castle.MonoRail.JSONSupport.xml | 129 + .../lib/castle/bin/Castle.MonoRail.TestSupport.dll | Bin 0 -> 45056 bytes .../lib/castle/bin/Castle.MonoRail.TestSupport.xml | 704 + .../bin/Castle.MonoRail.TransformFilters.dll | Bin 0 -> 5120 bytes .../bin/Castle.MonoRail.TransformFilters.xml | 27 + .../lib/castle/bin/Castle.MonoRail.Views.Brail.dll | Bin 0 -> 65536 bytes .../lib/castle/bin/Castle.MonoRail.Views.Brail.xml | 316 + .../bin/Castle.MonoRail.WindsorExtension.dll | Bin 0 -> 10240 bytes .../bin/Castle.MonoRail.WindsorExtension.xml | 124 + .../Castle.Services.Logging.Log4netIntegration.dll | Bin 0 -> 12288 bytes .../Castle.Services.Logging.Log4netIntegration.xml | 59 + .../Castle.Services.Logging.NLogIntegration.dll | Bin 0 -> 11776 bytes .../Castle.Services.Logging.NLogIntegration.xml | 339 + .../lib/castle/bin/Castle.Services.Transaction.dll | Bin 0 -> 32768 bytes .../lib/castle/bin/Castle.Services.Transaction.xml | 439 + .../bin/Castle.VSNetIntegration.CastleWizards.dll | Bin 0 -> 192512 bytes .../bin/Castle.VSNetIntegration.CastleWizards.xml | 189 + slips/build/lib/castle/bin/Castle.Windsor.dll | Bin 0 -> 61440 bytes slips/build/lib/castle/bin/Castle.Windsor.xml | 1238 + slips/build/lib/log4net/bin/log4net.dll | Bin 0 -> 270336 bytes slips/build/lib/log4net/bin/log4net.xml | 28655 +++++++++++++++++++ slips/build/local.properties.template | 15 + slips/build/project.build | 54 + slips/build/project.database.build | 53 + slips/build/project.deploy.build | 109 + slips/build/project.properties.build | 41 + slips/build/sql/Data/authorize.sql.template | 4 + slips/build/sql/Data/boat.sql.template | 5 + slips/build/sql/Data/customer.sql.template | 4 + slips/build/sql/Data/dock.sql.template | 6 + slips/build/sql/Data/lease.sql.template | 4 + slips/build/sql/Data/leasetype.sql.template | 7 + slips/build/sql/Data/location.sql.template | 5 + slips/build/sql/Data/slip.sql.template | 157 + slips/build/sql/ddl/database.sql.template | 15 + slips/build/sql/ddl/security.sql.template | 40 + slips/build/sql/ddl/tables.sql.template | 166 + slips/build/sql/original.sql.template | Bin 0 -> 38056 bytes slips/build/tools/mbunit/bin/MbUnit.AddIn.dll | Bin 0 -> 24576 bytes slips/build/tools/mbunit/bin/MbUnit.Cons.exe | Bin 0 -> 106496 bytes .../build/tools/mbunit/bin/MbUnit.Cons.exe.config | 12 + .../tools/mbunit/bin/MbUnit.Framework.2.0.dll | Bin 0 -> 10240 bytes slips/build/tools/mbunit/bin/MbUnit.Framework.dll | Bin 0 -> 487424 bytes slips/build/tools/mbunit/bin/MbUnit.GUI.exe | Bin 0 -> 315392 bytes slips/build/tools/mbunit/bin/MbUnit.GUI.exe.config | 14 + .../tools/mbunit/bin/MbUnit.MSBuild.Tasks.dll | Bin 0 -> 9216 bytes slips/build/tools/mbunit/bin/MbUnit.Tasks.dll | Bin 0 -> 20480 bytes slips/build/tools/mbunit/bin/NAnt.Core.dll | Bin 0 -> 352256 bytes slips/build/tools/mbunit/bin/NGraphviz.Helpers.dll | Bin 0 -> 49152 bytes slips/build/tools/mbunit/bin/NGraphviz.Layout.dll | Bin 0 -> 20480 bytes slips/build/tools/mbunit/bin/NGraphviz.dll | Bin 0 -> 1069056 bytes .../mbunit/bin/QuickGraph.Algorithms.Graphviz.dll | Bin 0 -> 36864 bytes .../tools/mbunit/bin/QuickGraph.Algorithms.dll | Bin 0 -> 180224 bytes slips/build/tools/mbunit/bin/QuickGraph.dll | Bin 0 -> 126976 bytes slips/build/tools/mbunit/bin/Refly.dll | Bin 0 -> 135168 bytes .../tools/mbunit/bin/TestDriven.Framework.dll | Bin 0 -> 5120 bytes slips/build/tools/mbunit/bin/TestFu.dll | Bin 0 -> 163840 bytes .../MbUnitCSharpSnippets/autorunner.snippet | 48 + .../MbUnitCSharpSnippets/combinatorialtest.snippet | 56 + .../MbUnitCSharpSnippets/datafixture.snippet | 63 + .../VSSnippets/MbUnitCSharpSnippets/model.snippet | 101 + .../processtestfixture.snippet | 72 + .../MbUnitCSharpSnippets/rowtest.snippet | 114 + .../VSSnippets/MbUnitCSharpSnippets/state.snippet | 30 + .../MbUnitCSharpSnippets/submodel.snippet | 34 + .../VSSnippets/MbUnitCSharpSnippets/test.snippet | 28 + .../testexpectedexception.snippet | 34 + .../MbUnitCSharpSnippets/testfixture.snippet | 71 + .../MbUnitCSharpSnippets/testsuitefixture.snippet | 52 + .../MbUnitCSharpSnippets/typefixture.snippet | 67 + .../typefixturewithproviderfactory.snippet | 77 + .../MbUnitCSharpSnippets/usingmbunit.snippet | 19 + .../VSSnippets/MbUnitVBSnippets/autorunner.snippet | 45 + .../MbUnitVBSnippets/combinatorialtest.snippet | 54 + .../MbUnitVBSnippets/datafixture.snippet | 61 + .../bin/VSSnippets/MbUnitVBSnippets/model.snippet | 95 + .../MbUnitVBSnippets/processtestfixture.snippet | 75 + .../VSSnippets/MbUnitVBSnippets/rowtest.snippet | 113 + .../bin/VSSnippets/MbUnitVBSnippets/state.snippet | 27 + .../VSSnippets/MbUnitVBSnippets/submodel.snippet | 32 + .../bin/VSSnippets/MbUnitVBSnippets/test.snippet | 28 + .../MbUnitVBSnippets/testexpectedexception.snippet | 32 + .../MbUnitVBSnippets/testfixture.snippet | 68 + .../MbUnitVBSnippets/testsuitefixture.snippet | 48 + .../MbUnitVBSnippets/typefixture.snippet | 74 + .../typefixturewithproviderfactory.snippet | 77 + .../MbUnitVBSnippets/usingmbunit.snippet | 19 + .../VSSnippets/MbUnitXMLSnippets/msbuild.snippet | 40 + .../bin/VSSnippets/MbUnitXMLSnippets/nant.snippet | 34 + slips/build/tools/mbunit/bin/XsdTidy.exe | Bin 0 -> 49152 bytes slips/build/tools/mbunit/bin/log4net.dll | Bin 0 -> 204800 bytes slips/build/tools/mbunit/bin/uninst.exe | Bin 0 -> 48819 bytes slips/build/tools/nant/bin/CollectionGen.dll | Bin 0 -> 73728 bytes .../tools/nant/bin/Interop.MsmMergeTypeLib.dll | Bin 0 -> 11776 bytes slips/build/tools/nant/bin/Interop.StarTeam.dll | Bin 0 -> 462848 bytes .../tools/nant/bin/Interop.WindowsInstaller.dll | Bin 0 -> 32768 bytes slips/build/tools/nant/bin/MSITaskErrors.mst | Bin 0 -> 27136 bytes slips/build/tools/nant/bin/MSITaskTemplate.msi | Bin 0 -> 294400 bytes slips/build/tools/nant/bin/MSMTaskErrors.mst | Bin 0 -> 27136 bytes slips/build/tools/nant/bin/MSMTaskTemplate.msm | Bin 0 -> 249344 bytes .../build/tools/nant/bin/NAnt.CompressionTasks.dll | Bin 0 -> 32768 bytes .../build/tools/nant/bin/NAnt.CompressionTasks.xml | 615 + slips/build/tools/nant/bin/NAnt.Contrib.Tasks.dll | Bin 0 -> 565248 bytes slips/build/tools/nant/bin/NAnt.Contrib.Tasks.xml | 18933 ++++++++++++ slips/build/tools/nant/bin/NAnt.Core.dll | Bin 0 -> 368640 bytes slips/build/tools/nant/bin/NAnt.Core.xml | 15577 ++++++++++ slips/build/tools/nant/bin/NAnt.DotNetTasks.dll | Bin 0 -> 131072 bytes slips/build/tools/nant/bin/NAnt.DotNetTasks.xml | 5318 ++++ slips/build/tools/nant/bin/NAnt.MSNetTasks.dll | Bin 0 -> 28672 bytes slips/build/tools/nant/bin/NAnt.MSNetTasks.xml | 579 + slips/build/tools/nant/bin/NAnt.NUnit.dll | Bin 0 -> 8704 bytes slips/build/tools/nant/bin/NAnt.NUnit.xml | 353 + slips/build/tools/nant/bin/NAnt.NUnit1Tasks.dll | Bin 0 -> 36864 bytes slips/build/tools/nant/bin/NAnt.NUnit1Tasks.xml | 538 + slips/build/tools/nant/bin/NAnt.NUnit2Tasks.dll | Bin 0 -> 32768 bytes slips/build/tools/nant/bin/NAnt.NUnit2Tasks.xml | 568 + .../tools/nant/bin/NAnt.SourceControlTasks.dll | Bin 0 -> 40960 bytes .../tools/nant/bin/NAnt.SourceControlTasks.xml | 1283 + slips/build/tools/nant/bin/NAnt.VSNetTasks.dll | Bin 0 -> 163840 bytes slips/build/tools/nant/bin/NAnt.VSNetTasks.xml | 3912 +++ slips/build/tools/nant/bin/NAnt.VisualCppTasks.dll | Bin 0 -> 49152 bytes slips/build/tools/nant/bin/NAnt.VisualCppTasks.xml | 1205 + slips/build/tools/nant/bin/NAnt.Win32Tasks.dll | Bin 0 -> 36864 bytes slips/build/tools/nant/bin/NAnt.Win32Tasks.xml | 690 + slips/build/tools/nant/bin/NAnt.exe | Bin 0 -> 12800 bytes slips/build/tools/nant/bin/NAnt.exe.config | 1918 ++ slips/build/tools/nant/bin/NAnt.xml | 78 + .../build/tools/nant/bin/NDoc.Documenter.NAnt.dll | Bin 0 -> 131072 bytes slips/build/tools/nant/bin/SLiNgshoT.Core.dll | Bin 0 -> 53248 bytes slips/build/tools/nant/bin/SLiNgshoT.exe | Bin 0 -> 6144 bytes slips/build/tools/nant/bin/SourceSafe.Interop.dll | Bin 0 -> 61440 bytes slips/build/tools/nant/bin/Vitreo.Nant.dll | Bin 0 -> 20480 bytes .../bin/extensions/common/2.0/NAnt.MSBuild.dll | Bin 0 -> 23040 bytes .../bin/extensions/common/2.0/NAnt.MSBuild.xml | 37 + .../bin/lib/ICSharpCode.SharpCvsLib.Console.dll | Bin 0 -> 98304 bytes .../tools/nant/bin/lib/ICSharpCode.SharpCvsLib.dll | Bin 0 -> 155648 bytes .../tools/nant/bin/lib/ICSharpCode.SharpZipLib.dll | Bin 0 -> 143360 bytes slips/build/tools/nant/bin/lib/NUnitCore.dll | Bin 0 -> 40960 bytes .../build/tools/nant/bin/lib/net/2.0/NDoc.Core.dll | Bin 0 -> 208896 bytes .../nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll | Bin 0 -> 331776 bytes .../tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll | Bin 0 -> 28672 bytes .../tools/nant/bin/lib/net/2.0/nunit.core.dll | Bin 0 -> 86016 bytes .../tools/nant/bin/lib/net/2.0/nunit.framework.dll | Bin 0 -> 40960 bytes .../tools/nant/bin/lib/net/2.0/nunit.util.dll | Bin 0 -> 86016 bytes slips/build/tools/nant/bin/log4net.dll | Bin 0 -> 241664 bytes slips/build/tools/nant/bin/scvs.exe | Bin 0 -> 7680 bytes slips/build/tools/rhino.mocks/bin/Rhino.Mocks.dll | Bin 0 -> 242688 bytes slips/build/tools/rhino.mocks/bin/Rhino.Mocks.xml | 7677 +++++ slips/dox/Assignment Database/InlandMarina.mdf | Bin 0 -> 2293760 bytes slips/dox/Assignment Database/InlandMarina_log.LDF | Bin 0 -> 786432 bytes slips/dox/Inland Marina Background.doc | Bin 0 -> 25600 bytes slips/dox/InlandMarinaScript.sql | Bin 0 -> 38056 bytes slips/dox/Marina Assignment.doc | Bin 0 -> 34304 bytes slips/dox/MarinaDatabaseDiagram.doc | Bin 0 -> 46592 bytes slips/dox/inlandbanner_v3_800x100.jpg | Bin 0 -> 80576 bytes slips/dox/template/contact.html | 108 + slips/dox/template/index.html | 151 + slips/dox/template/page1.html | 122 + slips/dox/template/page2.html | 122 + slips/dox/template/page3.html | 122 + slips/dox/template/style/back.png | Bin 0 -> 224 bytes slips/dox/template/style/colour.css | 85 + slips/dox/template/style/graphic.jpg | Bin 0 -> 2002 bytes slips/dox/template/style/link.png | Bin 0 -> 186 bytes slips/dox/template/style/logo.jpg | Bin 0 -> 16985 bytes slips/dox/template/style/menu.png | Bin 0 -> 165 bytes slips/dox/template/style/menu_hover.png | Bin 0 -> 166 bytes slips/dox/template/style/sbi_header.png | Bin 0 -> 201 bytes slips/dox/template/style/style.css | 274 + slips/readme.txt | 63 + slips/src/app/Marina.Web.UI/AvailableSlips.aspx | 37 + slips/src/app/Marina.Web.UI/AvailableSlips.aspx.cs | 21 + .../Marina.Web.UI/AvailableSlips.aspx.designer.cs | 16 + slips/src/app/Marina.Web.UI/ContactUs.aspx | 23 + slips/src/app/Marina.Web.UI/ContactUs.aspx.cs | 8 + .../app/Marina.Web.UI/ContactUs.aspx.designer.cs | 16 + slips/src/app/Marina.Web.UI/CurrentLeases.aspx | 28 + slips/src/app/Marina.Web.UI/CurrentLeases.aspx.cs | 19 + .../Marina.Web.UI/CurrentLeases.aspx.designer.cs | 25 + slips/src/app/Marina.Web.UI/Default.aspx | 19 + slips/src/app/Marina.Web.UI/Default.aspx.cs | 8 + .../src/app/Marina.Web.UI/Default.aspx.designer.cs | 16 + slips/src/app/Marina.Web.UI/DockView.aspx | 60 + slips/src/app/Marina.Web.UI/DockView.aspx.cs | 26 + .../app/Marina.Web.UI/DockView.aspx.designer.cs | 25 + slips/src/app/Marina.Web.UI/Global.asax | 1 + slips/src/app/Marina.Web.UI/LeaseSlip.aspx | 46 + slips/src/app/Marina.Web.UI/LeaseSlip.aspx.cs | 26 + .../app/Marina.Web.UI/LeaseSlip.aspx.designer.cs | 25 + slips/src/app/Marina.Web.UI/Login.aspx | 36 + slips/src/app/Marina.Web.UI/Login.aspx.cs | 22 + slips/src/app/Marina.Web.UI/Login.aspx.designer.cs | 34 + slips/src/app/Marina.Web.UI/Marina.Web.UI.csproj | 215 + slips/src/app/Marina.Web.UI/RegisterBoat.aspx | 48 + slips/src/app/Marina.Web.UI/RegisterBoat.aspx.cs | 20 + .../Marina.Web.UI/RegisterBoat.aspx.designer.cs | 34 + slips/src/app/Marina.Web.UI/Registration.aspx | 48 + slips/src/app/Marina.Web.UI/Registration.aspx.cs | 44 + .../Marina.Web.UI/Registration.aspx.designer.cs | 34 + slips/src/app/Marina.Web.UI/Site.Master | 89 + slips/src/app/Marina.Web.UI/Site.Master.cs | 8 + .../src/app/Marina.Web.UI/Site.Master.designer.cs | 43 + .../Marina.Web.UI/UpdateCustomerRegistration.aspx | 52 + .../UpdateCustomerRegistration.aspx.cs | 27 + .../UpdateCustomerRegistration.aspx.designer.cs | 34 + .../src/app/Marina.Web.UI/ViewRegisteredBoats.aspx | 34 + .../app/Marina.Web.UI/ViewRegisteredBoats.aspx.cs | 19 + .../ViewRegisteredBoats.aspx.designer.cs | 25 + slips/src/app/Marina.Web.UI/Web.config | 95 + slips/src/app/Marina.Web.UI/WebServicesAPI.aspx | 15 + slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.cs | 23 + .../Marina.Web.UI/WebServicesAPI.aspx.designer.cs | 16 + slips/src/app/Marina.Web.UI/images/back.png | Bin 0 -> 224 bytes slips/src/app/Marina.Web.UI/images/graphic.jpg | Bin 0 -> 2002 bytes slips/src/app/Marina.Web.UI/images/link.png | Bin 0 -> 186 bytes slips/src/app/Marina.Web.UI/images/logo.jpg | Bin 0 -> 16985 bytes slips/src/app/Marina.Web.UI/images/menu.png | Bin 0 -> 165 bytes slips/src/app/Marina.Web.UI/images/menu_hover.png | Bin 0 -> 166 bytes slips/src/app/Marina.Web.UI/images/sbi_header.png | Bin 0 -> 201 bytes slips/src/app/Marina.Web.UI/style/colour.css | 85 + slips/src/app/Marina.Web.UI/style/style.css | 274 + slips/src/app/Marina.Web.UI/windsor.config.xml | 116 + .../Marina/DataAccess/Builders/DatabaseDelete.cs | 31 + .../Marina/DataAccess/Builders/DatabaseInsert.cs | 50 + .../Marina/DataAccess/Builders/DatabaseSelect.cs | 101 + .../Marina/DataAccess/Builders/DatabaseUpdate.cs | 52 + .../DataAccess/Builders/IDeleteQueryBuilder.cs | 3 + .../DataAccess/Builders/IInsertQueryBuilder.cs | 5 + slips/src/app/Marina/DataAccess/Builders/IJoin.cs | 6 + slips/src/app/Marina/DataAccess/Builders/IQuery.cs | 7 + .../Marina/DataAccess/Builders/IQueryBuilder.cs | 9 + .../DataAccess/Builders/ISelectQueryBuilder.cs | 11 + .../DataAccess/Builders/IUpdateQueryBuilder.cs | 5 + slips/src/app/Marina/DataAccess/Builders/Query.cs | 22 + .../src/app/Marina/DataAccess/Builders/SqlQuery.cs | 18 + .../app/Marina/DataAccess/Builders/WhereClause.cs | 27 + .../DataAccess/DataMappers/BoatDataMapper.cs | 74 + .../DataAccess/DataMappers/CustomerDataMapper.cs | 82 + .../DataAccess/DataMappers/DockDataMapper.cs | 54 + .../DataAccess/DataMappers/IBoatDataMapper.cs | 12 + .../DataAccess/DataMappers/ICustomerDataMapper.cs | 11 + .../Marina/DataAccess/DataMappers/IDataMapper.cs | 5 + .../DataAccess/DataMappers/IDockDataMapper.cs | 6 + .../DataAccess/DataMappers/ILeaseDataMapper.cs | 14 + .../DataMappers/IRegistrationDataMapper.cs | 11 + .../DataAccess/DataMappers/ISlipDataMapper.cs | 9 + .../DataAccess/DataMappers/LeaseDataMapper.cs | 87 + .../DataMappers/RegistrationDataMapper.cs | 88 + .../DataAccess/DataMappers/SlipDataMapper.cs | 97 + slips/src/app/Marina/DataAccess/DatabaseColumn.cs | 23 + slips/src/app/Marina/DataAccess/DatabaseCommand.cs | 23 + .../Marina/DataAccess/DatabaseCommandParameter.cs | 19 + .../app/Marina/DataAccess/DatabaseConfiguration.cs | 22 + .../app/Marina/DataAccess/DatabaseConnection.cs | 38 + .../Marina/DataAccess/DatabaseConnectionFactory.cs | 7 + slips/src/app/Marina/DataAccess/DatabaseGateway.cs | 60 + .../Marina/DataAccess/DatabaseProviderFactory.cs | 10 + slips/src/app/Marina/DataAccess/DatabaseRow.cs | 24 + .../app/Marina/DataAccess/DatabaseTransaction.cs | 19 + .../ObjectAlreadyAddedToIdentityMapException.cs | 9 + .../src/app/Marina/DataAccess/IDatabaseCommand.cs | 9 + .../Marina/DataAccess/IDatabaseConfiguration.cs | 7 + .../app/Marina/DataAccess/IDatabaseConnection.cs | 10 + .../DataAccess/IDatabaseConnectionFactory.cs | 5 + .../src/app/Marina/DataAccess/IDatabaseGateway.cs | 19 + .../Marina/DataAccess/IDatabaseProviderFactory.cs | 7 + slips/src/app/Marina/DataAccess/IDatabaseRow.cs | 5 + .../app/Marina/DataAccess/IDatabaseTransaction.cs | 7 + slips/src/app/Marina/DataAccess/IIdentityMap.cs | 9 + slips/src/app/Marina/DataAccess/IdentityMap.cs | 42 + .../DataAccess/Repositories/CustomerRepository.cs | 51 + .../DataAccess/Repositories/DockRepository.cs | 20 + .../DataAccess/Repositories/SlipsRepository.cs | 58 + .../DataAccess/Schemas/AuthorizationTable.cs | 9 + .../src/app/Marina/DataAccess/Schemas/BoatTable.cs | 11 + .../app/Marina/DataAccess/Schemas/CustomerTable.cs | 10 + .../src/app/Marina/DataAccess/Schemas/DockTable.cs | 10 + .../app/Marina/DataAccess/Schemas/LeaseTable.cs | 11 + .../src/app/Marina/DataAccess/Schemas/LeaseType.cs | 8 + .../app/Marina/DataAccess/Schemas/LocationTable.cs | 7 + .../src/app/Marina/DataAccess/Schemas/SlipTable.cs | 9 + slips/src/app/Marina/Domain/Boat.cs | 72 + slips/src/app/Marina/Domain/BrokenRule.cs | 15 + slips/src/app/Marina/Domain/Customer.cs | 76 + .../src/app/Marina/Domain/CustomerRegistration.cs | 151 + slips/src/app/Marina/Domain/DateRange.cs | 22 + slips/src/app/Marina/Domain/Dock.cs | 33 + slips/src/app/Marina/Domain/DomainObject.cs | 19 + .../Exceptions/SlipIsAlreadyLeasedException.cs | 5 + slips/src/app/Marina/Domain/Interfaces/IBoat.cs | 13 + .../app/Marina/Domain/Interfaces/IBrokenRule.cs | 5 + .../app/Marina/Domain/Interfaces/IBusinessRule.cs | 9 + .../src/app/Marina/Domain/Interfaces/ICustomer.cs | 27 + .../src/app/Marina/Domain/Interfaces/IDateRange.cs | 9 + slips/src/app/Marina/Domain/Interfaces/IDock.cs | 11 + .../app/Marina/Domain/Interfaces/IDomainObject.cs | 7 + .../app/Marina/Domain/Interfaces/ILeaseDuration.cs | 10 + .../src/app/Marina/Domain/Interfaces/ILeaseType.cs | 7 + .../src/app/Marina/Domain/Interfaces/ILocation.cs | 5 + slips/src/app/Marina/Domain/Interfaces/IRange.cs | 11 + .../app/Marina/Domain/Interfaces/IRegistration.cs | 22 + slips/src/app/Marina/Domain/Interfaces/ISlip.cs | 15 + .../src/app/Marina/Domain/Interfaces/ISlipLease.cs | 13 + slips/src/app/Marina/Domain/Interfaces/IUtility.cs | 5 + slips/src/app/Marina/Domain/LeaseDurations.cs | 62 + slips/src/app/Marina/Domain/Location.cs | 15 + slips/src/app/Marina/Domain/Range.cs | 32 + .../Domain/Repositories/ICustomerRepository.cs | 13 + .../Marina/Domain/Repositories/IDockRepository.cs | 7 + .../Marina/Domain/Repositories/ISlipsRepository.cs | 12 + slips/src/app/Marina/Domain/Slip.cs | 46 + slips/src/app/Marina/Domain/SlipLease.cs | 37 + slips/src/app/Marina/Domain/UnknownCustomer.cs | 39 + slips/src/app/Marina/Domain/Utilities.cs | 91 + .../src/app/Marina/Infrastructure/BlankCommand.cs | 5 + .../Configuration/ConfigurationItem.cs | 13 + .../Configuration/ConfigurationItems.cs | 15 + .../Container/Custom/CustomDependencyContainer.cs | 21 + .../Container/IDependencyContainer.cs | 5 + .../Container/InterfaceResolutionException.cs | 11 + .../app/Marina/Infrastructure/Container/Resolve.cs | 21 + .../Windsor/WindsorDependencyContainer.cs | 16 + .../app/Marina/Infrastructure/EnumerableMapper.cs | 17 + slips/src/app/Marina/Infrastructure/ICommand.cs | 5 + slips/src/app/Marina/Infrastructure/IFactory.cs | 5 + slips/src/app/Marina/Infrastructure/IMapper.cs | 5 + .../app/Marina/Infrastructure/IRichEnumerable.cs | 7 + slips/src/app/Marina/Infrastructure/IRichList.cs | 91 + .../app/Marina/Infrastructure/ISpecification.cs | 5 + .../Marina/Infrastructure/ISpecificationBuilder.cs | 5 + .../src/app/Marina/Infrastructure/ITransformer.cs | 5 + .../Infrastructure/IValueReturningVisitor.cs | 5 + slips/src/app/Marina/Infrastructure/IVisitor.cs | 5 + slips/src/app/Marina/Infrastructure/ListFactory.cs | 20 + .../Infrastructure/Logging/Interfaces/ILog.cs | 7 + .../Logging/Interfaces/ILogFactory.cs | 7 + .../Infrastructure/Logging/Interfaces/Log.cs | 14 + .../Log4Net/ILog4NetInitializationCommand.cs | 8 + .../Log4Net/Log4NetInitializationCommand.cs | 19 + .../Infrastructure/Logging/Log4Net/Log4NetLog.cs | 23 + .../Logging/Log4Net/Log4NetLogFactory.cs | 30 + .../Logging/TextWriterLogging/TextWriterLog.cs | 24 + .../TextWriterLogging/TextWriterLogFactory.cs | 10 + .../app/Marina/Infrastructure/RichEnumerable.cs | 28 + slips/src/app/Marina/Infrastructure/RichList.cs | 45 + .../Marina/Infrastructure/SpecificationBuilder.cs | 44 + slips/src/app/Marina/Infrastructure/Transform.cs | 7 + slips/src/app/Marina/Infrastructure/Transformer.cs | 22 + slips/src/app/Marina/Marina.csproj | 322 + .../Marina/Presentation/DTO/BoatRegistrationDTO.cs | 41 + .../DTO/CustomerRegistrationDisplayDTO.cs | 91 + .../app/Marina/Presentation/DTO/DisplayLeaseDTO.cs | 28 + .../Presentation/DTO/DisplayResponseLineDTO.cs | 36 + .../Presentation/DTO/DisplayResponseLines.cs | 24 + .../app/Marina/Presentation/DTO/DockDisplayDTO.cs | 36 + .../Marina/Presentation/DTO/LoginCredentialsDTO.cs | 24 + .../Marina/Presentation/DTO/RegisterCustomerDTO.cs | 47 + .../app/Marina/Presentation/DTO/SlipDisplayDTO.cs | 48 + .../Presentation/DTO/SubmitLeaseRequestDTO.cs | 60 + .../DTO/UpdateCustomerRegistrationDTO.cs | 53 + .../CustomerRegistrationPresentationMapper.cs | 17 + .../ICustomerRegistrationPresentationMapper.cs | 8 + .../ILeaseRequestDtoFromHttpRequestMapper.cs | 7 + .../Mappers/ILoginCredentialsMapper.cs | 7 + .../Mappers/INewBoatRegistrationMapper.cs | 7 + .../IUpdateRegistrationPresentationMapper.cs | 7 + .../LeaseRequestDtoFromHttpRequestMapper.cs | 14 + .../Presentation/Mappers/LoginCredentialsMapper.cs | 13 + .../Mappers/NewBoatRegistrationMapper.cs | 16 + .../UpdateRegistrationPresentationMapper.cs | 18 + slips/src/app/Marina/Presentation/PayLoadKeys.cs | 12 + slips/src/app/Marina/Presentation/PayloadKey.cs | 48 + .../Presentation/PayloadKeyNotFoundException.cs | 7 + .../Presenters/AvailableSlipsPresenter.cs | 25 + .../Presenters/CurrentLeasesPresenter.cs | 25 + .../Presenters/CustomerRegistrationPresenter.cs | 30 + .../Presentation/Presenters/DockPresenter.cs | 31 + .../Presenters/IAvailableSlipsPresenter.cs | 5 + .../Presenters/ICurrentLeasesPresenter.cs | 5 + .../Presenters/ICustomerRegistrationPresenter.cs | 5 + .../Presentation/Presenters/IDockPresenter.cs | 5 + .../Presentation/Presenters/ILeaseSlipPresenter.cs | 7 + .../Presentation/Presenters/ILoginPresenter.cs | 5 + .../Presenters/IRegisterBoatPresenter.cs | 5 + .../IUpdateCustomerRegistrationPresenter.cs | 7 + .../Presenters/IViewRegisteredBoatsPresenter.cs | 5 + .../Presentation/Presenters/LeaseSlipPresenter.cs | 41 + .../Presentation/Presenters/LoginPresenter.cs | 34 + .../Presenters/RegisterBoatPresenter.cs | 33 + .../UpdateCustomerRegistrationPresenter.cs | 44 + .../Presenters/ViewRegisteredBoatsPresenter.cs | 25 + .../Presentation/Views/IAvailableSlipsView.cs | 8 + .../Presentation/Views/ICurrentLeasesView.cs | 8 + .../Views/ICustomerRegistrationView.cs | 20 + .../src/app/Marina/Presentation/Views/IDockView.cs | 9 + .../Marina/Presentation/Views/ILeaseSlipView.cs | 9 + .../app/Marina/Presentation/Views/ILoginView.cs | 7 + .../Marina/Presentation/Views/IRegisterBoatView.cs | 8 + .../Presentation/Views/IRegisteredBoatsView.cs | 8 + .../Presentation/Views/IUpdateRegistrationView.cs | 9 + slips/src/app/Marina/Properties/AssemblyInfo.cs | 36 + .../src/app/Marina/Task/ApplicationStartupTask.cs | 14 + slips/src/app/Marina/Task/AuthenticationTask.cs | 41 + slips/src/app/Marina/Task/CatalogTasks.cs | 52 + .../src/app/Marina/Task/IApplicationStartupTask.cs | 5 + slips/src/app/Marina/Task/IAuthenticationTask.cs | 7 + slips/src/app/Marina/Task/ICatalogTasks.cs | 14 + slips/src/app/Marina/Task/ILeaseTasks.cs | 10 + slips/src/app/Marina/Task/IRegistrationTasks.cs | 16 + slips/src/app/Marina/Task/LeaseTasks.cs | 39 + .../Task/Mappers/BrokenRulesToDisplayItemMapper.cs | 13 + .../Marina/Task/Mappers/DockToDisplayDTOMapper.cs | 16 + .../Mappers/IBrokenRulesToDisplayItemMapper.cs | 9 + .../Marina/Task/Mappers/IDockToDisplayDTOMapper.cs | 7 + .../app/Marina/Task/Mappers/ILeaseToDtoMapper.cs | 7 + .../Task/Mappers/ISlipsToDisplayDTOMapper.cs | 7 + .../app/Marina/Task/Mappers/LeaseToDtoMapper.cs | 12 + .../Marina/Task/Mappers/SlipsToDisplayDTOMapper.cs | 16 + slips/src/app/Marina/Task/RegistrationTasks.cs | 92 + .../src/app/Marina/Web/AuthenticationHttpModule.cs | 28 + .../Marina/Web/Commands/AvailableSlipsCommand.cs | 23 + slips/src/app/Marina/Web/Commands/CommandNames.cs | 5 + .../src/app/Marina/Web/Commands/RedirectCommand.cs | 11 + slips/src/app/Marina/Web/CurrentHttpContext.cs | 135 + slips/src/app/Marina/Web/CurrentHttpRequest.cs | 20 + slips/src/app/Marina/Web/FrontController.cs | 21 + slips/src/app/Marina/Web/GlobalApplication.cs | 17 + .../Marina/Web/Handlers/AvailableSlipsHandler.cs | 7 + slips/src/app/Marina/Web/Handlers/Dispatcher.cs | 24 + .../app/Marina/Web/Handlers/IRegisteredHandlers.cs | 8 + .../src/app/Marina/Web/Handlers/IRequestHandler.cs | 6 + .../app/Marina/Web/Handlers/RegisteredHandlers.cs | 9 + .../src/app/Marina/Web/Handlers/RequestHandler.cs | 26 + .../Web/Handlers/RequestHandlerSpecification.cs | 16 + slips/src/app/Marina/Web/Http/HttpGateway.cs | 71 + slips/src/app/Marina/Web/Http/IHttpGateway.cs | 16 + slips/src/app/Marina/Web/IHttpContext.cs | 69 + slips/src/app/Marina/Web/IHttpRequest.cs | 7 + slips/src/app/Marina/Web/Redirect.cs | 10 + .../Web/Services/AuthenticationServices.asmx | 1 + .../Web/Services/AuthenticationWebServices.cs | 21 + .../app/Marina/Web/Services/CatalogServices.asmx | 1 + .../app/Marina/Web/Services/CatalogWebServices.cs | 35 + .../src/app/Marina/Web/Services/LeaseServices.asmx | 1 + .../app/Marina/Web/Services/LeaseWebServices.cs | 26 + .../Marina/Web/Services/RegistrationServices.asmx | 1 + .../Marina/Web/Services/RegistrationWebServices.cs | 38 + .../Marina/Web/UnhandledExceptionsHttpModule.cs | 19 + slips/src/app/Marina/Web/Views/IView.cs | 7 + .../src/app/Marina/Web/Views/IViewLuggageTicket.cs | 3 + .../Marina/Web/Views/IViewLuggageTransporter.cs | 7 + slips/src/app/Marina/Web/Views/IWebView.cs | 5 + .../Web/Views/Pages/AvailableSlipsWebView.cs | 16 + .../Web/Views/Pages/IAvailableSlipsWebView.cs | 6 + slips/src/app/Marina/Web/Views/View.cs | 28 + slips/src/app/Marina/Web/Views/ViewLuggage.cs | 11 + .../src/app/Marina/Web/Views/ViewLuggageTickets.cs | 14 + .../app/Marina/Web/Views/ViewLuggageTransporter.cs | 32 + slips/src/app/Marina/Web/Views/WebView.cs | 27 + slips/src/app/Marina/Web/Views/WebViews.cs | 18 + .../DataAccess/Mappers/BoatDataMapperTest.cs | 78 + .../DataAccess/Mappers/CustomerDataMapperTest.cs | 25 + .../DataAccess/Mappers/LeaseDataMapperTest.cs | 44 + .../Mappers/RegistrationDataMapperTest.cs | 70 + .../DataAccess/Repositories/DockRepositoryTest.cs | 24 + .../DataAccess/Repositories/SlipRepositoryTest.cs | 32 + .../Integration/DataAccess/Utility/BoatMother.cs | 19 + .../DataAccess/Utility/CustomerMother.cs | 34 + .../Integration/DataAccess/Utility/LeaseMother.cs | 21 + .../Integration/DataAccess/Utility/SlipMother.cs | 18 + .../Integration/Task/CatalogTasksTest.cs | 19 + slips/src/test/Marina.Test/Marina.Test.csproj | 136 + .../test/Marina.Test/Properties/AssemblyInfo.cs | 36 + .../Unit/DataAccess/DatabaseCommandTest.cs | 48 + .../Unit/DataAccess/DatabaseConfigurationTest.cs | 33 + .../Unit/DataAccess/DatabaseConnectionTest.cs | 167 + .../Unit/DataAccess/DatabaseGatewayTest.cs | 91 + .../DataAccess/Mappers/CustomerDataMapperTest.cs | 86 + .../Repositories/CustomerRepositoryTest.cs | 142 + .../DataAccess/Repositories/DockRepositoryTest.cs | 38 + .../DataAccess/Repositories/IdentityMapTest.cs | 71 + .../DataAccess/Repositories/SlipRepositoryTest.cs | 50 + .../Unit/Domain/CustomerRegistrationTest.cs | 50 + .../test/Marina.Test/Unit/Domain/CustomerTest.cs | 118 + slips/src/test/Marina.Test/Unit/Domain/DockTest.cs | 24 + .../Marina.Test/Unit/Domain/LeaseDurationTest.cs | 45 + slips/src/test/Marina.Test/Unit/Domain/SlipTest.cs | 78 + .../test/Marina.Test/Unit/Domain/UtilitiesTest.cs | 36 + .../Infrastructure/Logging/Interfaces/LogTest.cs | 36 + .../TextWriterLogging/TextWriterLogFactoryTest.cs | 19 + .../Logging/TextWriterLogging/TextWriterLogTest.cs | 26 + .../Unit/Infrastructure/TransformTest.cs | 37 + .../Presentation/AvailableSlipsPresenterTest.cs | 51 + .../Presentation/CurrentLeasesPresenterTest.cs | 63 + .../CustomerRegistrationPresenterTest.cs | 69 + .../Unit/Presentation/DockPresenterTest.cs | 90 + .../Unit/Presentation/LeaseSlipPresenterTest.cs | 100 + .../Unit/Presentation/LoginPresenterTest.cs | 62 + .../CustomerRegistrationPresentationMapperTest.cs | 52 + .../Mappers/LoginCredentialsMapperTest.cs | 35 + .../UpdateRegistrationPresentationMapperTest.cs | 57 + .../Unit/Presentation/PayloadKeyTest.cs | 45 + .../Unit/Presentation/RegisterBoatPresenterTest.cs | 67 + .../UpdateRegistrationPresenterTest.cs | 92 + .../ViewRegisteredBoatsPresenterTest.cs | 62 + .../test/Marina.Test/Unit/Task/CatalogTasksTest.cs | 106 + .../test/Marina.Test/Unit/Task/LeaseTasksTest.cs | 181 + .../Marina.Test/Unit/Task/RegistrationTasksTest.cs | 217 + .../Unit/Web/Commands/AvailableSlipsCommandTest.cs | 56 + .../Handlers/RequestHandlerSpecificationTest.cs | 53 + .../Unit/Web/Handlers/RequestHandlerTest.cs | 49 + .../Web/Views/Pages/AvailableSlipsWebViewTest.cs | 49 + .../test/Marina.Test/Unit/Web/Views/ViewTest.cs | 48 + slips/src/test/Marina.Test/Utility/ObjectMother.cs | 69 + .../Utility/RunInRealContainerAttribute.cs | 14 + .../Utility/RunInRealContainerRunInvoker.cs | 18 + 578 files changed, 151809 insertions(+) create mode 100644 slips/Sait.Cmpp299.Assignment1.sln create mode 100644 slips/build/Marina.Build.csproj create mode 100644 slips/build/build.bat create mode 100644 slips/build/config/app.config.template create mode 100644 slips/build/config/log4net.config.xml.template create mode 100644 slips/build/config/windsor.config.xml.template create mode 100644 slips/build/lib/castle/bin/Castle.ActiveRecord.dll create mode 100644 slips/build/lib/castle/bin/Castle.ActiveRecord.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.Binder.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.Binder.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.xml create mode 100644 slips/build/lib/castle/bin/Castle.Components.Validator.dll create mode 100644 slips/build/lib/castle/bin/Castle.Components.Validator.pdb create mode 100644 slips/build/lib/castle/bin/Castle.Components.Validator.xml create mode 100644 slips/build/lib/castle/bin/Castle.Core.dll create mode 100644 slips/build/lib/castle/bin/Castle.Core.xml create mode 100644 slips/build/lib/castle/bin/Castle.DynamicProxy.dll create mode 100644 slips/build/lib/castle/bin/Castle.DynamicProxy.xml create mode 100644 slips/build/lib/castle/bin/Castle.DynamicProxy2.dll create mode 100644 slips/build/lib/castle/bin/Castle.DynamicProxy2.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Cache.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Cache.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Logging.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Logging.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Prevalence.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Prevalence.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.xml create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Synchronize.dll create mode 100644 slips/build/lib/castle/bin/Castle.Facilities.Synchronize.xml create mode 100644 slips/build/lib/castle/bin/Castle.MicroKernel.dll create mode 100644 slips/build/lib/castle/bin/Castle.MicroKernel.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Framework.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Framework.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.xml create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.dll create mode 100644 slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.xml create mode 100644 slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.dll create mode 100644 slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.xml create mode 100644 slips/build/lib/castle/bin/Castle.Services.Transaction.dll create mode 100644 slips/build/lib/castle/bin/Castle.Services.Transaction.xml create mode 100644 slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.dll create mode 100644 slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.xml create mode 100644 slips/build/lib/castle/bin/Castle.Windsor.dll create mode 100644 slips/build/lib/castle/bin/Castle.Windsor.xml create mode 100644 slips/build/lib/log4net/bin/log4net.dll create mode 100644 slips/build/lib/log4net/bin/log4net.xml create mode 100644 slips/build/local.properties.template create mode 100644 slips/build/project.build create mode 100644 slips/build/project.database.build create mode 100644 slips/build/project.deploy.build create mode 100644 slips/build/project.properties.build create mode 100644 slips/build/sql/Data/authorize.sql.template create mode 100644 slips/build/sql/Data/boat.sql.template create mode 100644 slips/build/sql/Data/customer.sql.template create mode 100644 slips/build/sql/Data/dock.sql.template create mode 100644 slips/build/sql/Data/lease.sql.template create mode 100644 slips/build/sql/Data/leasetype.sql.template create mode 100644 slips/build/sql/Data/location.sql.template create mode 100644 slips/build/sql/Data/slip.sql.template create mode 100644 slips/build/sql/ddl/database.sql.template create mode 100644 slips/build/sql/ddl/security.sql.template create mode 100644 slips/build/sql/ddl/tables.sql.template create mode 100644 slips/build/sql/original.sql.template create mode 100644 slips/build/tools/mbunit/bin/MbUnit.AddIn.dll create mode 100644 slips/build/tools/mbunit/bin/MbUnit.Cons.exe create mode 100644 slips/build/tools/mbunit/bin/MbUnit.Cons.exe.config create mode 100644 slips/build/tools/mbunit/bin/MbUnit.Framework.2.0.dll create mode 100644 slips/build/tools/mbunit/bin/MbUnit.Framework.dll create mode 100644 slips/build/tools/mbunit/bin/MbUnit.GUI.exe create mode 100644 slips/build/tools/mbunit/bin/MbUnit.GUI.exe.config create mode 100644 slips/build/tools/mbunit/bin/MbUnit.MSBuild.Tasks.dll create mode 100644 slips/build/tools/mbunit/bin/MbUnit.Tasks.dll create mode 100644 slips/build/tools/mbunit/bin/NAnt.Core.dll create mode 100644 slips/build/tools/mbunit/bin/NGraphviz.Helpers.dll create mode 100644 slips/build/tools/mbunit/bin/NGraphviz.Layout.dll create mode 100644 slips/build/tools/mbunit/bin/NGraphviz.dll create mode 100644 slips/build/tools/mbunit/bin/QuickGraph.Algorithms.Graphviz.dll create mode 100644 slips/build/tools/mbunit/bin/QuickGraph.Algorithms.dll create mode 100644 slips/build/tools/mbunit/bin/QuickGraph.dll create mode 100644 slips/build/tools/mbunit/bin/Refly.dll create mode 100644 slips/build/tools/mbunit/bin/TestDriven.Framework.dll create mode 100644 slips/build/tools/mbunit/bin/TestFu.dll create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/autorunner.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/combinatorialtest.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/datafixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/model.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/processtestfixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/rowtest.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/state.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/submodel.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/test.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testexpectedexception.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testfixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testsuitefixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixturewithproviderfactory.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/usingmbunit.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/autorunner.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/combinatorialtest.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/datafixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/model.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/processtestfixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/rowtest.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/state.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/submodel.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/test.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testexpectedexception.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testfixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testsuitefixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixture.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixturewithproviderfactory.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/usingmbunit.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/msbuild.snippet create mode 100644 slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/nant.snippet create mode 100644 slips/build/tools/mbunit/bin/XsdTidy.exe create mode 100644 slips/build/tools/mbunit/bin/log4net.dll create mode 100644 slips/build/tools/mbunit/bin/uninst.exe create mode 100644 slips/build/tools/nant/bin/CollectionGen.dll create mode 100644 slips/build/tools/nant/bin/Interop.MsmMergeTypeLib.dll create mode 100644 slips/build/tools/nant/bin/Interop.StarTeam.dll create mode 100644 slips/build/tools/nant/bin/Interop.WindowsInstaller.dll create mode 100644 slips/build/tools/nant/bin/MSITaskErrors.mst create mode 100644 slips/build/tools/nant/bin/MSITaskTemplate.msi create mode 100644 slips/build/tools/nant/bin/MSMTaskErrors.mst create mode 100644 slips/build/tools/nant/bin/MSMTaskTemplate.msm create mode 100644 slips/build/tools/nant/bin/NAnt.CompressionTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.CompressionTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.Contrib.Tasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.Contrib.Tasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.Core.dll create mode 100644 slips/build/tools/nant/bin/NAnt.Core.xml create mode 100644 slips/build/tools/nant/bin/NAnt.DotNetTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.DotNetTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.MSNetTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.MSNetTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit.dll create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit.xml create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit1Tasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit1Tasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit2Tasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.NUnit2Tasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.SourceControlTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.SourceControlTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.VSNetTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.VSNetTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.VisualCppTasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.VisualCppTasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.Win32Tasks.dll create mode 100644 slips/build/tools/nant/bin/NAnt.Win32Tasks.xml create mode 100644 slips/build/tools/nant/bin/NAnt.exe create mode 100644 slips/build/tools/nant/bin/NAnt.exe.config create mode 100644 slips/build/tools/nant/bin/NAnt.xml create mode 100644 slips/build/tools/nant/bin/NDoc.Documenter.NAnt.dll create mode 100644 slips/build/tools/nant/bin/SLiNgshoT.Core.dll create mode 100644 slips/build/tools/nant/bin/SLiNgshoT.exe create mode 100644 slips/build/tools/nant/bin/SourceSafe.Interop.dll create mode 100644 slips/build/tools/nant/bin/Vitreo.Nant.dll create mode 100644 slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll create mode 100644 slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml create mode 100644 slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.Console.dll create mode 100644 slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.dll create mode 100644 slips/build/tools/nant/bin/lib/ICSharpCode.SharpZipLib.dll create mode 100644 slips/build/tools/nant/bin/lib/NUnitCore.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/NDoc.Core.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/nunit.core.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/nunit.framework.dll create mode 100644 slips/build/tools/nant/bin/lib/net/2.0/nunit.util.dll create mode 100644 slips/build/tools/nant/bin/log4net.dll create mode 100644 slips/build/tools/nant/bin/scvs.exe create mode 100644 slips/build/tools/rhino.mocks/bin/Rhino.Mocks.dll create mode 100644 slips/build/tools/rhino.mocks/bin/Rhino.Mocks.xml create mode 100644 slips/dox/Assignment Database/InlandMarina.mdf create mode 100644 slips/dox/Assignment Database/InlandMarina_log.LDF create mode 100644 slips/dox/Inland Marina Background.doc create mode 100644 slips/dox/InlandMarinaScript.sql create mode 100644 slips/dox/Marina Assignment.doc create mode 100644 slips/dox/MarinaDatabaseDiagram.doc create mode 100644 slips/dox/inlandbanner_v3_800x100.jpg create mode 100644 slips/dox/template/contact.html create mode 100644 slips/dox/template/index.html create mode 100644 slips/dox/template/page1.html create mode 100644 slips/dox/template/page2.html create mode 100644 slips/dox/template/page3.html create mode 100644 slips/dox/template/style/back.png create mode 100644 slips/dox/template/style/colour.css create mode 100644 slips/dox/template/style/graphic.jpg create mode 100644 slips/dox/template/style/link.png create mode 100644 slips/dox/template/style/logo.jpg create mode 100644 slips/dox/template/style/menu.png create mode 100644 slips/dox/template/style/menu_hover.png create mode 100644 slips/dox/template/style/sbi_header.png create mode 100644 slips/dox/template/style/style.css create mode 100644 slips/readme.txt create mode 100644 slips/src/app/Marina.Web.UI/AvailableSlips.aspx create mode 100644 slips/src/app/Marina.Web.UI/AvailableSlips.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/AvailableSlips.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/ContactUs.aspx create mode 100644 slips/src/app/Marina.Web.UI/ContactUs.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/ContactUs.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/CurrentLeases.aspx create mode 100644 slips/src/app/Marina.Web.UI/CurrentLeases.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/CurrentLeases.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Default.aspx create mode 100644 slips/src/app/Marina.Web.UI/Default.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/Default.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/DockView.aspx create mode 100644 slips/src/app/Marina.Web.UI/DockView.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/DockView.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Global.asax create mode 100644 slips/src/app/Marina.Web.UI/LeaseSlip.aspx create mode 100644 slips/src/app/Marina.Web.UI/LeaseSlip.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/LeaseSlip.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Login.aspx create mode 100644 slips/src/app/Marina.Web.UI/Login.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/Login.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Marina.Web.UI.csproj create mode 100644 slips/src/app/Marina.Web.UI/RegisterBoat.aspx create mode 100644 slips/src/app/Marina.Web.UI/RegisterBoat.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/RegisterBoat.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Registration.aspx create mode 100644 slips/src/app/Marina.Web.UI/Registration.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/Registration.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Site.Master create mode 100644 slips/src/app/Marina.Web.UI/Site.Master.cs create mode 100644 slips/src/app/Marina.Web.UI/Site.Master.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx create mode 100644 slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx create mode 100644 slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/Web.config create mode 100644 slips/src/app/Marina.Web.UI/WebServicesAPI.aspx create mode 100644 slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.cs create mode 100644 slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.designer.cs create mode 100644 slips/src/app/Marina.Web.UI/images/back.png create mode 100644 slips/src/app/Marina.Web.UI/images/graphic.jpg create mode 100644 slips/src/app/Marina.Web.UI/images/link.png create mode 100644 slips/src/app/Marina.Web.UI/images/logo.jpg create mode 100644 slips/src/app/Marina.Web.UI/images/menu.png create mode 100644 slips/src/app/Marina.Web.UI/images/menu_hover.png create mode 100644 slips/src/app/Marina.Web.UI/images/sbi_header.png create mode 100644 slips/src/app/Marina.Web.UI/style/colour.css create mode 100644 slips/src/app/Marina.Web.UI/style/style.css create mode 100644 slips/src/app/Marina.Web.UI/windsor.config.xml create mode 100644 slips/src/app/Marina/DataAccess/Builders/DatabaseDelete.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/DatabaseInsert.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/DatabaseSelect.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/DatabaseUpdate.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IDeleteQueryBuilder.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IInsertQueryBuilder.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IJoin.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IQuery.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IQueryBuilder.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/ISelectQueryBuilder.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/IUpdateQueryBuilder.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/Query.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/SqlQuery.cs create mode 100644 slips/src/app/Marina/DataAccess/Builders/WhereClause.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/BoatDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/CustomerDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/DockDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/IBoatDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/ICustomerDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/IDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/IDockDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/ILeaseDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/IRegistrationDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/ISlipDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/LeaseDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/RegistrationDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DataMappers/SlipDataMapper.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseColumn.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseCommand.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseCommandParameter.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseConfiguration.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseConnection.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseConnectionFactory.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseGateway.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseProviderFactory.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseRow.cs create mode 100644 slips/src/app/Marina/DataAccess/DatabaseTransaction.cs create mode 100644 slips/src/app/Marina/DataAccess/Exceptions/ObjectAlreadyAddedToIdentityMapException.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseCommand.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseConfiguration.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseConnection.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseConnectionFactory.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseGateway.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseProviderFactory.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseRow.cs create mode 100644 slips/src/app/Marina/DataAccess/IDatabaseTransaction.cs create mode 100644 slips/src/app/Marina/DataAccess/IIdentityMap.cs create mode 100644 slips/src/app/Marina/DataAccess/IdentityMap.cs create mode 100644 slips/src/app/Marina/DataAccess/Repositories/CustomerRepository.cs create mode 100644 slips/src/app/Marina/DataAccess/Repositories/DockRepository.cs create mode 100644 slips/src/app/Marina/DataAccess/Repositories/SlipsRepository.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/AuthorizationTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/BoatTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/CustomerTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/DockTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/LeaseTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/LeaseType.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/LocationTable.cs create mode 100644 slips/src/app/Marina/DataAccess/Schemas/SlipTable.cs create mode 100644 slips/src/app/Marina/Domain/Boat.cs create mode 100644 slips/src/app/Marina/Domain/BrokenRule.cs create mode 100644 slips/src/app/Marina/Domain/Customer.cs create mode 100644 slips/src/app/Marina/Domain/CustomerRegistration.cs create mode 100644 slips/src/app/Marina/Domain/DateRange.cs create mode 100644 slips/src/app/Marina/Domain/Dock.cs create mode 100644 slips/src/app/Marina/Domain/DomainObject.cs create mode 100644 slips/src/app/Marina/Domain/Exceptions/SlipIsAlreadyLeasedException.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IBoat.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IBrokenRule.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IBusinessRule.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ICustomer.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IDateRange.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IDock.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IDomainObject.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ILeaseDuration.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ILeaseType.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ILocation.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IRange.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IRegistration.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ISlip.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/ISlipLease.cs create mode 100644 slips/src/app/Marina/Domain/Interfaces/IUtility.cs create mode 100644 slips/src/app/Marina/Domain/LeaseDurations.cs create mode 100644 slips/src/app/Marina/Domain/Location.cs create mode 100644 slips/src/app/Marina/Domain/Range.cs create mode 100644 slips/src/app/Marina/Domain/Repositories/ICustomerRepository.cs create mode 100644 slips/src/app/Marina/Domain/Repositories/IDockRepository.cs create mode 100644 slips/src/app/Marina/Domain/Repositories/ISlipsRepository.cs create mode 100644 slips/src/app/Marina/Domain/Slip.cs create mode 100644 slips/src/app/Marina/Domain/SlipLease.cs create mode 100644 slips/src/app/Marina/Domain/UnknownCustomer.cs create mode 100644 slips/src/app/Marina/Domain/Utilities.cs create mode 100644 slips/src/app/Marina/Infrastructure/BlankCommand.cs create mode 100644 slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItem.cs create mode 100644 slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItems.cs create mode 100644 slips/src/app/Marina/Infrastructure/Container/Custom/CustomDependencyContainer.cs create mode 100644 slips/src/app/Marina/Infrastructure/Container/IDependencyContainer.cs create mode 100644 slips/src/app/Marina/Infrastructure/Container/InterfaceResolutionException.cs create mode 100644 slips/src/app/Marina/Infrastructure/Container/Resolve.cs create mode 100644 slips/src/app/Marina/Infrastructure/Container/Windsor/WindsorDependencyContainer.cs create mode 100644 slips/src/app/Marina/Infrastructure/EnumerableMapper.cs create mode 100644 slips/src/app/Marina/Infrastructure/ICommand.cs create mode 100644 slips/src/app/Marina/Infrastructure/IFactory.cs create mode 100644 slips/src/app/Marina/Infrastructure/IMapper.cs create mode 100644 slips/src/app/Marina/Infrastructure/IRichEnumerable.cs create mode 100644 slips/src/app/Marina/Infrastructure/IRichList.cs create mode 100644 slips/src/app/Marina/Infrastructure/ISpecification.cs create mode 100644 slips/src/app/Marina/Infrastructure/ISpecificationBuilder.cs create mode 100644 slips/src/app/Marina/Infrastructure/ITransformer.cs create mode 100644 slips/src/app/Marina/Infrastructure/IValueReturningVisitor.cs create mode 100644 slips/src/app/Marina/Infrastructure/IVisitor.cs create mode 100644 slips/src/app/Marina/Infrastructure/ListFactory.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILog.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILogFactory.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Interfaces/Log.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Log4Net/ILog4NetInitializationCommand.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetInitializationCommand.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLog.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLogFactory.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLog.cs create mode 100644 slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactory.cs create mode 100644 slips/src/app/Marina/Infrastructure/RichEnumerable.cs create mode 100644 slips/src/app/Marina/Infrastructure/RichList.cs create mode 100644 slips/src/app/Marina/Infrastructure/SpecificationBuilder.cs create mode 100644 slips/src/app/Marina/Infrastructure/Transform.cs create mode 100644 slips/src/app/Marina/Infrastructure/Transformer.cs create mode 100644 slips/src/app/Marina/Marina.csproj create mode 100644 slips/src/app/Marina/Presentation/DTO/BoatRegistrationDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/CustomerRegistrationDisplayDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/DisplayLeaseDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/DisplayResponseLineDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/DisplayResponseLines.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/DockDisplayDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/LoginCredentialsDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/RegisterCustomerDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/SlipDisplayDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/SubmitLeaseRequestDTO.cs create mode 100644 slips/src/app/Marina/Presentation/DTO/UpdateCustomerRegistrationDTO.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/CustomerRegistrationPresentationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/ICustomerRegistrationPresentationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/ILeaseRequestDtoFromHttpRequestMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/ILoginCredentialsMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/INewBoatRegistrationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/IUpdateRegistrationPresentationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/LeaseRequestDtoFromHttpRequestMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/LoginCredentialsMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/NewBoatRegistrationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/Mappers/UpdateRegistrationPresentationMapper.cs create mode 100644 slips/src/app/Marina/Presentation/PayLoadKeys.cs create mode 100644 slips/src/app/Marina/Presentation/PayloadKey.cs create mode 100644 slips/src/app/Marina/Presentation/PayloadKeyNotFoundException.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/AvailableSlipsPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/CurrentLeasesPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/CustomerRegistrationPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/DockPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/IAvailableSlipsPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/ICurrentLeasesPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/ICustomerRegistrationPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/IDockPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/ILeaseSlipPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/ILoginPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/IRegisterBoatPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/IUpdateCustomerRegistrationPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/IViewRegisteredBoatsPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/LeaseSlipPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/LoginPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/RegisterBoatPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/UpdateCustomerRegistrationPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Presenters/ViewRegisteredBoatsPresenter.cs create mode 100644 slips/src/app/Marina/Presentation/Views/IAvailableSlipsView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/ICurrentLeasesView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/ICustomerRegistrationView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/IDockView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/ILeaseSlipView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/ILoginView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/IRegisterBoatView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/IRegisteredBoatsView.cs create mode 100644 slips/src/app/Marina/Presentation/Views/IUpdateRegistrationView.cs create mode 100644 slips/src/app/Marina/Properties/AssemblyInfo.cs create mode 100644 slips/src/app/Marina/Task/ApplicationStartupTask.cs create mode 100644 slips/src/app/Marina/Task/AuthenticationTask.cs create mode 100644 slips/src/app/Marina/Task/CatalogTasks.cs create mode 100644 slips/src/app/Marina/Task/IApplicationStartupTask.cs create mode 100644 slips/src/app/Marina/Task/IAuthenticationTask.cs create mode 100644 slips/src/app/Marina/Task/ICatalogTasks.cs create mode 100644 slips/src/app/Marina/Task/ILeaseTasks.cs create mode 100644 slips/src/app/Marina/Task/IRegistrationTasks.cs create mode 100644 slips/src/app/Marina/Task/LeaseTasks.cs create mode 100644 slips/src/app/Marina/Task/Mappers/BrokenRulesToDisplayItemMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/DockToDisplayDTOMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/IBrokenRulesToDisplayItemMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/IDockToDisplayDTOMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/ILeaseToDtoMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/ISlipsToDisplayDTOMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/LeaseToDtoMapper.cs create mode 100644 slips/src/app/Marina/Task/Mappers/SlipsToDisplayDTOMapper.cs create mode 100644 slips/src/app/Marina/Task/RegistrationTasks.cs create mode 100644 slips/src/app/Marina/Web/AuthenticationHttpModule.cs create mode 100644 slips/src/app/Marina/Web/Commands/AvailableSlipsCommand.cs create mode 100644 slips/src/app/Marina/Web/Commands/CommandNames.cs create mode 100644 slips/src/app/Marina/Web/Commands/RedirectCommand.cs create mode 100644 slips/src/app/Marina/Web/CurrentHttpContext.cs create mode 100644 slips/src/app/Marina/Web/CurrentHttpRequest.cs create mode 100644 slips/src/app/Marina/Web/FrontController.cs create mode 100644 slips/src/app/Marina/Web/GlobalApplication.cs create mode 100644 slips/src/app/Marina/Web/Handlers/AvailableSlipsHandler.cs create mode 100644 slips/src/app/Marina/Web/Handlers/Dispatcher.cs create mode 100644 slips/src/app/Marina/Web/Handlers/IRegisteredHandlers.cs create mode 100644 slips/src/app/Marina/Web/Handlers/IRequestHandler.cs create mode 100644 slips/src/app/Marina/Web/Handlers/RegisteredHandlers.cs create mode 100644 slips/src/app/Marina/Web/Handlers/RequestHandler.cs create mode 100644 slips/src/app/Marina/Web/Handlers/RequestHandlerSpecification.cs create mode 100644 slips/src/app/Marina/Web/Http/HttpGateway.cs create mode 100644 slips/src/app/Marina/Web/Http/IHttpGateway.cs create mode 100644 slips/src/app/Marina/Web/IHttpContext.cs create mode 100644 slips/src/app/Marina/Web/IHttpRequest.cs create mode 100644 slips/src/app/Marina/Web/Redirect.cs create mode 100644 slips/src/app/Marina/Web/Services/AuthenticationServices.asmx create mode 100644 slips/src/app/Marina/Web/Services/AuthenticationWebServices.cs create mode 100644 slips/src/app/Marina/Web/Services/CatalogServices.asmx create mode 100644 slips/src/app/Marina/Web/Services/CatalogWebServices.cs create mode 100644 slips/src/app/Marina/Web/Services/LeaseServices.asmx create mode 100644 slips/src/app/Marina/Web/Services/LeaseWebServices.cs create mode 100644 slips/src/app/Marina/Web/Services/RegistrationServices.asmx create mode 100644 slips/src/app/Marina/Web/Services/RegistrationWebServices.cs create mode 100644 slips/src/app/Marina/Web/UnhandledExceptionsHttpModule.cs create mode 100644 slips/src/app/Marina/Web/Views/IView.cs create mode 100644 slips/src/app/Marina/Web/Views/IViewLuggageTicket.cs create mode 100644 slips/src/app/Marina/Web/Views/IViewLuggageTransporter.cs create mode 100644 slips/src/app/Marina/Web/Views/IWebView.cs create mode 100644 slips/src/app/Marina/Web/Views/Pages/AvailableSlipsWebView.cs create mode 100644 slips/src/app/Marina/Web/Views/Pages/IAvailableSlipsWebView.cs create mode 100644 slips/src/app/Marina/Web/Views/View.cs create mode 100644 slips/src/app/Marina/Web/Views/ViewLuggage.cs create mode 100644 slips/src/app/Marina/Web/Views/ViewLuggageTickets.cs create mode 100644 slips/src/app/Marina/Web/Views/ViewLuggageTransporter.cs create mode 100644 slips/src/app/Marina/Web/Views/WebView.cs create mode 100644 slips/src/app/Marina/Web/Views/WebViews.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Mappers/BoatDataMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Mappers/CustomerDataMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Mappers/LeaseDataMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Mappers/RegistrationDataMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Repositories/DockRepositoryTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Repositories/SlipRepositoryTest.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Utility/BoatMother.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Utility/CustomerMother.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Utility/LeaseMother.cs create mode 100644 slips/src/test/Marina.Test/Integration/DataAccess/Utility/SlipMother.cs create mode 100644 slips/src/test/Marina.Test/Integration/Task/CatalogTasksTest.cs create mode 100644 slips/src/test/Marina.Test/Marina.Test.csproj create mode 100644 slips/src/test/Marina.Test/Properties/AssemblyInfo.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/DatabaseCommandTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConfigurationTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConnectionTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/DatabaseGatewayTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/Mappers/CustomerDataMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/Repositories/CustomerRepositoryTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/Repositories/DockRepositoryTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/Repositories/IdentityMapTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/DataAccess/Repositories/SlipRepositoryTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/CustomerRegistrationTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/CustomerTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/DockTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/LeaseDurationTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/SlipTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Domain/UtilitiesTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Infrastructure/Logging/Interfaces/LogTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactoryTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Infrastructure/TransformTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/AvailableSlipsPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/CurrentLeasesPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/CustomerRegistrationPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/DockPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/LeaseSlipPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/LoginPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/Mappers/CustomerRegistrationPresentationMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/Mappers/LoginCredentialsMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/Mappers/UpdateRegistrationPresentationMapperTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/PayloadKeyTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/RegisterBoatPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/UpdateRegistrationPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Presentation/ViewRegisteredBoatsPresenterTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Task/CatalogTasksTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Task/LeaseTasksTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Task/RegistrationTasksTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Web/Commands/AvailableSlipsCommandTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerSpecificationTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Web/Views/Pages/AvailableSlipsWebViewTest.cs create mode 100644 slips/src/test/Marina.Test/Unit/Web/Views/ViewTest.cs create mode 100644 slips/src/test/Marina.Test/Utility/ObjectMother.cs create mode 100644 slips/src/test/Marina.Test/Utility/RunInRealContainerAttribute.cs create mode 100644 slips/src/test/Marina.Test/Utility/RunInRealContainerRunInvoker.cs diff --git a/slips/Sait.Cmpp299.Assignment1.sln b/slips/Sait.Cmpp299.Assignment1.sln new file mode 100644 index 0000000..e4ffe0f --- /dev/null +++ b/slips/Sait.Cmpp299.Assignment1.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marina.Web.UI", "src\app\Marina.Web.UI\Marina.Web.UI.csproj", "{29824849-3D66-4ACF-8699-79BB60C30BD7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marina", "src\app\Marina\Marina.csproj", "{F9AF658A-2A26-49DE-A964-7A846A8DCC2A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marina.Test", "src\test\Marina.Test\Marina.Test.csproj", "{D9BCEEBA-F4D1-4057-8070-5EB1640D618D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marina.Build", "build\Marina.Build.csproj", "{D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {29824849-3D66-4ACF-8699-79BB60C30BD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29824849-3D66-4ACF-8699-79BB60C30BD7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29824849-3D66-4ACF-8699-79BB60C30BD7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29824849-3D66-4ACF-8699-79BB60C30BD7}.Release|Any CPU.Build.0 = Release|Any CPU + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A}.Release|Any CPU.Build.0 = Release|Any CPU + {D9BCEEBA-F4D1-4057-8070-5EB1640D618D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9BCEEBA-F4D1-4057-8070-5EB1640D618D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9BCEEBA-F4D1-4057-8070-5EB1640D618D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9BCEEBA-F4D1-4057-8070-5EB1640D618D}.Release|Any CPU.Build.0 = Release|Any CPU + {D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/slips/build/Marina.Build.csproj b/slips/build/Marina.Build.csproj new file mode 100644 index 0000000..1e6cfd8 --- /dev/null +++ b/slips/build/Marina.Build.csproj @@ -0,0 +1,293 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {D9FEDAC7-58CA-4DEA-A5A8-6FF94CC52A87} + Library + Properties + Marina.Build + Marina.Build + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/build.bat b/slips/build/build.bat new file mode 100644 index 0000000..20e4168 --- /dev/null +++ b/slips/build/build.bat @@ -0,0 +1,5 @@ +@echo off + +cls +tools\nant\bin\NAnt.exe -buildfile:project.build -nologo -logfile:build.txt %* +echo %time% \ No newline at end of file diff --git a/slips/build/config/app.config.template b/slips/build/config/app.config.template new file mode 100644 index 0000000..223cca9 --- /dev/null +++ b/slips/build/config/app.config.template @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/slips/build/config/log4net.config.xml.template b/slips/build/config/log4net.config.xml.template new file mode 100644 index 0000000..0f921e8 --- /dev/null +++ b/slips/build/config/log4net.config.xml.template @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/slips/build/config/windsor.config.xml.template b/slips/build/config/windsor.config.xml.template new file mode 100644 index 0000000..beee6fd --- /dev/null +++ b/slips/build/config/windsor.config.xml.template @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.ActiveRecord.dll b/slips/build/lib/castle/bin/Castle.ActiveRecord.dll new file mode 100644 index 0000000..42f8fe6 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.ActiveRecord.dll differ diff --git a/slips/build/lib/castle/bin/Castle.ActiveRecord.xml b/slips/build/lib/castle/bin/Castle.ActiveRecord.xml new file mode 100644 index 0000000..deaea65 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.ActiveRecord.xml @@ -0,0 +1,9091 @@ + + + + Castle.ActiveRecord + + + + + Validate that the property's value is unique in the database when saved + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Associate meta information related to the + desired table mapping. + + + + [ActiveRecord("tb_Order")] + public class Order : ActiveRecordBase + { + } + + + + If no table is specified, the class name + is used as table name + + + + + Implement common properties shared by some + attributes + + + + + Base class that allows specifying an access strategy to get/set the value for an object' property. + + + + + Gets or sets the access strategy for this property + + + + + Gets or sets the custom access strategy + + The custom access. + + + + Gets the access strategy string for NHibernate's mapping. + + The access string. + + + + Gets or sets the cache strategy to use for this property + + + + + Uses the class name as table name + + + + + Associates the specified table with the target type + + + + + + Associates the specified table and schema with the target type + + + + + Gets or sets the table name associated with the type + + + + + Gets or sets the schema name associated with the type + + + + + Associates a proxy type with the target type + + + + + Gets or sets the Discriminator column for + a table inheritance modeling + + + + + Gets or sets the column type (like string or integer) + for the discriminator column + + + + + Gets or sets the value that represents the + target class on the discriminator column + + + + + SQL condition to retrieve objects + + + + + Enable lazy loading for the type + + + + + Gets a value indicating whether explicit lazy behavior was specified. + If explicit lazy behavior was not specified, it goes to the configuration to decide if the type should + be lazy or not. + + + + + From NHibernate documentation: + Specifies that UPDATE SQL should be + generated at runtime and contain only + those columns whose values have changed. + + + + + From NHibernate documentation: + Specifies that INSERT SQL should be + generated at runtime and contain only + the columns whose values are not null. + + + + + From NHibernate documentation: + Specifies a custom . + + + + + From NHibernate documentation: + Specifies that NHibernate should never perform an SQL UPDATE + unless it is certain that an object is actually modified. In + certain cases (actually, only when a transient object has + been associated with a new session using update()), this means + that NHibernate will perform an extra SQL SELECT to determine + if an UPDATE is actually required. + + + + + From NHibernate documentation: + Determines whether implicit or explicit query polymorphism is used. + + + + + From NHibernate documentation: + Specifies that instances of the class are (not) mutable. + + + + + From NHibernate documentation: + Specify a "batch size" for fetching instances of + this class by identifier. + + + + + From NHibernate documentation: + Determines the optimistic locking strategy. + + + + + From NHibernate documentation: + The auto-import attribute lets us use + unqualified class names in the query language, + by default. The assembly and namespace attributes + specify the assembly where persistent classes + are located and the namespace they are declared in. + + + + + Denotes that the specific class - + which is an subclass + should not be processed by the framework + + + + + This attribute is used to create <any/> assoication, a polymorphic assoication to classes that + do not share a common base class. + + Assuming we have two classes that implement IPayment, CreditCard and BankAccount, and we want a property + that can point ot either one of them. We can map it like this: + + [Any(typeof (long), MetaType=typeof (string), + TypeColumn="BILLING_DETAILS_TYPE", + IdColumn="BILLING_DETAILS_ID", + Cascade=CascadeEnum.SaveUpdate)] + [Any.MetaValue("CREDIT_CARD", typeof (CreditCard))] + [Any.MetaValue("BANK_ACCOUNT", typeof (BankAccount))] + public IPayment Payment { get { ... } set { ... } } + + The [Any] attribute specify that the id type is long, that the meta type (the type that specify the type of + the class) is string. + The TypeColumn = "BILLING_DETAILS_TYPE" means that Active Record will look in this column to figure out what the type + of the associated entity is. + The IdColumn = "BILLING_DETAILS_ID" means that Active Record will use this column in conjuction with the type of the entity + to find the relevant entity. This is the id of the associated entity (which can point to either back account or credit card). + Cascade has the usual semantics. + + [Any.MetaValue("CREDIT_CARD", typeof (CreditCard))] - means that when Active Record encounters a "CREDIT_CARD" value in + the "BILLING_DETAILS_TYPE", is assumes that the id in the "BILLING_DETAILS_ID" is the id of a CreditCard entity. + + [Any.MetaValue("BANK_ACCOUNT", typeof (BankAccount))] - same, just for "BANK_ACCOUNT" meaning that the id in "BILLING_DETAILS_ID" + is an id of a bank account. + + + + This is supplied for advanced sceanrios. + + + + + Initializes a new instance of the class. + + Using this constructor defaults the idType to Int32 + + + + Initializes a new instance of the class. + + Type of the id. + + + + Gets or sets the type of the id. + + The type of the id. + + + + Gets or sets the type of the meta column + + The type of the meta. + + + + Gets or sets the cascade options + + The cascade. + + + + Gets or sets the type column name + + The type column. + + + + Gets or sets the id column name + + The id column. + + + + Gets or sets the index column name + + The index. + + + + Gets or sets a value indicating whether the column should be inserted when inserting. + + true if should insert; otherwise, false. + + + + Gets or sets a value indicating whether the column should be is updated when updating. + + true if should update; otherwise, false. + + + + Gets or sets a value indicating whether this property cannot be null. + + true if this property cannot be null; otherwise, false. + + + + Avoids the AnyAttribute.MetaValue syntax + + + + + This is used to specify a meta value in an [Any] assoication + Any.MetaValue is used to connect a value (such as "CREDIT_CARD") to its type ( typeof(CreditCard) ). + + + + + Initializes a new instance of the class. + + The value. + The clazz. + + + + This is here so the XmlGenerationVisitor will always + output the meta-values in consistent order, to aid the tests. + + + + + Gets or sets the value for this class + + The value. + + + + Gets or sets the class that match this value + + The class. + + + + Define how broken relations should be handled. + + + + + Throw an exception when the relation is broken. + + + + + Throw an exception when the relation is broken. + + this is the default behaviour + + + + Ignore the broken relation and update + the FK to null on the next save. + + + + + Maps a one to one association. + + + + public class Post : ActiveRecordBase + { + ... + + [BelongsTo("blogid")] + public Blog Blog + { + get { return _blog; } + set { _blog = value; } + } + + + + Please note that the 'blogid' foreign key lies on the 'Post' table. + + + + + Initializes a new instance of the class. + + + + + Indicates the name of the column to be used on the association. + Usually the name of the foreign key field on the underlying database. + + + + + Defines the target type of the association. It's usually inferred from the property type. + + + + + Defines the column used by association (usually a foreign key) + + + + + Defines the Composite Key columns used by association (aka Natural Keys). + + + + + Defines the cascading behavior of this association. + + + + + Defines the outer join behavior of this association. + NHibernate has deprecated the outer-join attribute so this property is + marked obsolete - it now converts to and from the fetch value. + + + + + Chooses between outer-join fetching + or sequential select fetching. + + + + + From NHibernate docs: The name of a property of the + associated class that is joined to the primary key + of this class. If not specified, the primary key of + the associated class is used. + + + + + Set to false to ignore this association when updating entities of this ActiveRecord class. + + + + + Set to false to ignore this association when inserting entities of this ActiveRecord class. + + + + + Indicates whether this association allows nulls or not. + + + + + Indicates whether this association is unique. + + + + + Gets or sets the way broken relations are handled. + + The behaviour. + + + + From NHibernate documentation: + A unique-key attribute can be used to group columns + in a single unit key constraint. + + unique key name + + Currently, the + specified value of the unique-key attribute is not + used to name the constraint, only to group the columns + in the mapping file. + + + + + Gets and sets the name of the foreign key constraint + generated for an association. + + + + + Defines the values for the generator for the Collection Id values.w + + + + + Use Identity column (auto number) + + + + + Use a sequence + + + + + Use the HiLo algorithm to get the next value + + + + + Use a sequence and a HiLo algorithm - better performance on Oracle + + + + + Use the hex representation of a unique identifier + + + + + Use the string representation of a unique identifier + + + + + Generate a Guid for the primary key + Note: You should prefer using GuidComb over this value. + + + + + Generate a Guid in sequence, so it will have better insert performance in the DB. + + + + + The key value is always assigned. + + + + + This is a foreign key to another table + + + + + Used for a collection that requires a collection id. + + + public class Blog : ActiveRecordBase + { + ... + + [HasManyAndBelongs/HasMany] + [CollectionIDAttribute(CollectionIDAttribute.Native)] + public int Id + { + get { return _id; } + set { _id = value; } + } + + + + + Initializes a new instance of the class. + + The generator. + The column. + Type of the column. + + + + Gets or sets the generator. + + The generator. + + + + Gets or sets the column name + + The column. + + + + Gets or sets the type of the column. + + The type of the column. + + + + Defines that the target property is a composite key + for the scope class + + + + + Gets or sets the unsaved value. + + The unsaved value. + + + + Maps the property to db using a NHibernate's . + + + You should specify the column names and the ICompositeUserType implementor. + + + + [CompositeUserType(typeof(DoubleStringType), new string[] {"Product_FirstName", "Product_LastName"})] + public string[] Name + { + get { return name; } + set { name = value; } + } + + or + + [CompositeUserType( + typeof(DoubleStringType), + new string[]{"Manufacturer_FirstName", "Manufacturer_LastName"}, + Length = new int[] {4, 5} )] + public string[] ManufacturerName + { + get { return manufacturerName; } + set { manufacturerName = value; } + } + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Type of the ICompositeUserType implmentor. + The column names. + + + + Gets or sets the type of the ICompositeUserType implementor. + + The type of the composite. + + + + Gets or sets the column names. + + The column names. + + + + Gets or sets the length of the columns. + + The columns length. + + + + Set to false to ignore this property when updating entities of this ActiveRecord class. + + + + + Set to false to ignore this property when inserting entities of this ActiveRecord class. + + + + + Defines the values for optimistic locking + + + + + do not use optimistic locking + + + + + check the version/timestamp columns + + + + + check the changed columns + + + + + check all columns + + + + + Define the polymorphism options + + + + + Implicit polymorphism + + + + + Explicit polymorphism + + + + + Define the caching options + + + + + Default value, no caching + + + + + Read only cache - use for cases where no write are performed. + + + + + Read write cache + + + + + Read write cache with looser semantics. + Check NHibernate's documentation for the detials. + + + + + Define outer join options + + + + + Let NHibernate decide what to do + + + + + Use outer join + + + + + Do not use outer join + + + + + Define the possible fetch option values + + + + + Let NHibernate decide what to do here + + + + + Use a JOIN to load the data + + + + + Use a seperate SELECT statement to load the data + + + + + Use a seperate SELECT statement to load the data, re-running the original query in a subselect + + + + + Defines the cascading behaviour of this association. + + + Entities has associations to other objects, this may be an association to a single item () + or an association to a collection (, ). + At any rate, you are able to tell NHibernate to automatically traverse an entity's associations, and act according + to the cascade option. For instance, adding an unsaved entity to a collection with + cascade will cause it to be saved along with its parent object, without any need for explicit instructions on our side. + + + + + No cascading. This is the default. + The cascade should be handled manually. + + + + + Cascade save, update and delete. + When the object is saved, updated or deleted, the associations will be checked + and the objects found will also be saved, updated or deleted. + + + + + Cascade save and update. + When the object is saved or updated, the associations will be checked and any object that requires + will be saved or updated (including saving or updating the associations in many-to-many scenario). + + + + + Cascade delete. + When the object is deleted, all the objects in the association will be deleted as well. + + + + + Defines the cascading behaviour of this association. + + + Entities has associations to other objects, this may be an association to a single item () + or an association to a collection (, ). + At any rate, you are able to tell NHibernate to automatically traverse an entity's associations, and act according + to the cascade option. For instance, adding an unsaved entity to a collection with + cascade will cause it to be saved along with its parent object, without any need for explicit instructions on our side. + + + + + No cascading. This is the default. + The cascade should be handled manually. + + + + + Cascade save, update and delete. + When the object is saved, updated or deleted, the associations will be checked + and the objects found will also be saved, updated or deleted. + + + + + Cascade save and update. + When the object is saved or updated, the associations will be checked and any object that requires + will be saved or updated (including saving or updating the associations in many-to-many scenario). + + + + + Cascade delete. + When the object is deleted, all the objects in the association will be deleted as well. + + + + + Cascade save, update and delete, removing orphan children. + When an object is saved, updated or deleted, the associations will be checked and all objects found + will be saved, updated or deleted as well. + In additional to that, when an object is removed from the association and not associated with another object (orphaned), it will also be deleted. + + + + + Maps a standard column of the table. + + + In the following example, the column is also + called 'name', so you don't have to specify. + + public class Blog : ActiveRecordBase + { + [Field] + string name; + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The column name. + + + + Initializes a new instance of the class. + + The column name + The column type. + + + + Gets or sets a value indicating whether the column allows null values + + true if [not null]; otherwise, false. + + + + Gets or sets the length of this column. char(10), etc + + The length. + + + + Gets or sets the column name + + The column. + + + + From NHibernate documentation: + A unique-key attribute can be used to group columns + in a single unit key constraint. + + unique key name + + Currently, the + specified value of the unique-key attribute is not + used to name the constraint, only to group the columns + in the mapping file. + + + + + From NHibernate documentation: + specifies the name of a (multi-column) index + + index name + + + + From NHibernate documentation: + overrides the default column type + + column_type + + + + From NHibernate documentation: + create an SQL check constraint on either column or table + + Sql Expression + + + + Set to false to ignore this + field when updating entities of this ActiveRecord class. + + + + + Set to false to ignore this + field when inserting entities of this ActiveRecord class. + + + + + Gets or sets a value indicating whether this is unique. + + true if unique; otherwise, false. + + + + Gets or sets the formula used to calculate this field + + The formula. + + + + Gets or sets the type of the column. + + The type of the column. + + + + Maps a many to many association with an association table. + + + public class Company : ActiveRecordBase + { + ... + + [HasAndBelongsToMany( typeof(Person), RelationType.Bag, Table="PeopleCompanies", Column="person_id", ColumnKey="company_id" )] + public IList People + { + get { return _people; } + set { _people = value; } + } + } + + The must specify the key on the + association table that points to the primary key of this class. In + the example, 'company_id' points to 'Company'. + + + + + Base class to define common relation information + + + + + Gets or sets the type of the relation. + + The type of the relation. + + + + Gets or sets the type of the map. + + The type of the map. + + + + Gets or sets the table for this relation + + The table. + + + + Gets or sets the schema for this relation (dbo., etc) + + The schema name. + + + + Gets or sets a value indicating whether this is lazy. + + true if lazy; otherwise, false. + + + + Gets or sets a value indicating whether this is inverse. + + true if inverse; otherwise, false. + + + + Gets or sets the cascade options for this + + The cascade. + + + + Gets or sets the order by clause for this relation. This is a SQL order, not HQL. + + + + + Gets or sets the where clause for this relation + + + + + Only used with sets. The value can be unsorted, natural and the name of a class implementing System.Collections.IComparer + + + + + Only used with maps or lists + + + + + Only used with maps + + + + + Use for simple types. + + + + + Gets or sets the way broken relations are handled. + + The behaviour. + + + + From NHibernate documentation: + Specify a "batch size" for batch fetching of collections. + + + + + Initializes a new instance of the class. + + Type of the map. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Type of the map. + The type. + + + + Gets or sets the column that represent the other side on the assoication table + + The column ref. + + + + Gets or sets the composite key columns that represent the other side on the assoication table + + The composite key column refs. + + + + Gets or sets the key column name + + The column key. + + + + Gets or sets the composite key columns names. + + The composite key column keys. + + + + Chooses between outer-join fetching + or sequential select fetching. + + + + + Provides a custom collection type. + + + + + Maps a one to many association. + + + public class Blog : ActiveRecordBase + { + ... + + [HasMany(typeof(Post), RelationType.Bag, ColumnKey="Posts", Table="Posts")] + public IList Posts + { + get { return _posts; } + set { _posts = value; } + } + + + + + The key column + Cannot exist if compositeKeyColumns has a value + + + + + The composite columns + Cannot exist with keyColumn != null + + + + + Whether the target type is for dependent objects or not + + + + + Whether we do outer join fetching for this collection + + + + + Provides a custom collection type. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Type of the map. + + + + Initializes a new instance of the class. + + Type of items in this association + The key column. + The table. + + + + Gets or sets the key column name. + + The column key. + + + + Gets or sets the names of the column in composite key scenarios. + + The composite key column keys. + + + + Whether or not the target type is a dependent object. + + true = the target type is a dependent object + + + + Chooses between outer-join fetching + or sequential select fetching. + + + + + Provides a custom collection type. + + + + + This attribute allows polymorphic association between classes that doesn't have a common root class. + In require two columns that would tell it what is the type of the asssoicated entity, and what is the PK of that entity. + + This is supplied for advanced sceanrios. + + + For instnace, let assume that you have two classes (that implement a common interface, but have no base classs) called: + - Back Account + - Credit Card + + And you have a set of Payment methods, that can be either. You would define the mapping so: + + [HasManyToAny(typeof(IPayment), "pay_id", "payments_table", typeof(int), "payment_type", "payment_method_id", + MetaType = typeof(int), RelationType = RelationType.Set)] + + typeof(IPayement) - the common interface tha both classes implement, and the type of all the items in the set. + "pay_id" - the column that hold the PK of this entity (the FK column) + "payments_table" - the table that has the assoication information (in 1:M scenarios - usuaully the same table, in M:N scenarios the link table). + typeof(int) - the type of id column + "payment_type" - the column used to find out which class is represented by this row. + "payment_method_id" - the column that holds the PK of the assoicated class (either CreditCard or BankAccount). + MetaType = typeof(int) - the type of the meta column (payment_type) + RelationType = RelationType.Set - specify that we use a set here + + + + + + + Initializes a new instance of the class. + + Type of the map. + The key colum. + The table. + Type of the id. + The type column. + The id column. + + + + Gets or sets the type column. + + The type column. + + + + Gets or sets the id column. + + The id column. + + + + Gets or sets the type of the meta column + + The type of the meta. + + + + Gets or sets the type of the id column + + The type of the id. + + + + Used when a constraint requires a hilo algorithm + + + public class Blog : ActiveRecordBase + { + ... + + [HasManyAndBelongs/HasMany, + CollectionID(CollectionIDAttribute.HiLo), + Hilo] + public int Id + { + get { return _id; } + set { _id = value; } + } + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The table. + The column. + The maxlo. + + + + Gets or sets the column name + + The column. + + + + Gets or sets the table name + + The table. + + + + Gets or sets the max low value + + The max lo. + + + + This is used to define a named HQL query. + It represents the <query> element. + + + [assembly: HqlNamedQuery("allAdultUsers", "from User where user.Age > 21")] + + + + + Create a new instance + + + + + The name of the query + + + + + The query itself + + + + + This is used to map between a type to a friendly name that can be used in the queries. + + This attribute is representing an <import/> in the mapping files + + + [Import(typeof(SummaryRow), "summary")] + + + + + Initializes a new instance of the class. + + The type. + The rename. + + + + Gets the type that is being imported + + The type. + + + + Gets or sets the renamed string that will replace the full type name in HQL queries for the specified type. + + The renamed value. + + + + Denotes that a class is the parent class of one or + more subclasses using a join + + + + + Used for joined subclasses. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The column. + + + + Gets or sets the column name + + The column. + + + + A key property for a composite key + + + + + Maps a standard column of the table. + + + In the following example, the column is also + called 'name', so you don't have to specify. + + public class Blog : ActiveRecordBase + { + ... + + [Property] + public int Name + { + get { return _name; } + set { _name = value; } + } + + To map a column name, use + + [Property("blog_name")] + public int Name + { + get { return _name; } + set { _name = value; } + } + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The column. + + + + Initializes a new instance of the class. + + The column. + The type. + + + + Gets or sets a value indicating whether this property allow null. + + true if allow null; otherwise, false. + + + + Gets or sets the length of the property (for strings - nvarchar(50) ) + + The length. + + + + Gets or sets the column name + + The column. + + + + Set to false to ignore this property when updating entities of this ActiveRecord class. + + + + + Set to false to ignore this property when inserting entities of this ActiveRecord class. + + + + + Gets or sets a value indicating whether this is unique. + + true if unique; otherwise, false. + + + + Gets or sets the formula used to calculate this property + + The formula. + + + + Gets or sets the type of the column. + + The type of the column. + + + + From NHibernate documentation: + A unique-key attribute can be used to group columns + in a single unit key constraint. + + unique key name + + Currently, the + specified value of the unique-key attribute is not + used to name the constraint, only to group the columns + in the mapping file. + + + + + From NHibernate documentation: + specifies the name of a (multi-column) index + + index name + + + + From NHibernate documentation: + overrides the default column type + + column_type + + + + From NHibernate documentation: + create an SQL check constraint on either column or table + + Sql Expression + + + + Gets or sets the unsaved value. + + The unsaved value. + + + + Maps properties of a child object to columns of the table + of a parent class. + + + The following code illustrates the use of a + nested PostalAddress class + + [ActiveRecord("Companies")] + public class Company : ActiveRecordBase + { + private int id; + private PostalAddress _address; + + public Company() + { + } + + public Company(string name) + { + this.name = name; + } + + [PrimaryKey] + public int Id + { + get { return id; } + set { id = value; } + } + + [Nested] + public PostalAddress Address + { + get { return _address; } + set { _address = value; } + } + } + + public class PostalAddress + { + private String _address; + private String _city; + private String _state; + private String _zipcode; + + [Property] + public String Address + { + get { return _address; } + set { _address = value; } + } + + [Property] + public String City + { + get { return _city; } + set { _city = value;} + } + + [Property] + public String State + { + get { return _state; } + set { _state = value; } + } + + [Property] + public String ZipCode + { + get { return _zipcode; } + set { _zipcode = value; } + } + } + + + + + + Informs ActiveRecord that the marked property contains nested elements, contained + in a separate, reusable class. + + + + + Informs ActiveRecord that the marked property contains nested elements, contained + in a separate, reusable class. + + A prefix to insert before each column in the nested component + + + + Allows one to reference a different type + than the property type + + + + + Set to false to ignore this nested component when updating entities of this ActiveRecord class. + + + + + Set to false to ignore this nested component when inserting entities of this ActiveRecord class. + + + + + A prefix to insert before each column in the nested component. + + + + + Maps a property of a child object to its parent object. + + + The following code illustrates the use of a + parent Company class + + public class PostalAddress + { + private Company _company; + private String _address; + private String _city; + private String _state; + private String _zipcode; + + [Parent] + public Company Parent + { + get { return _company; } + set { _company = value; } + } + + [Property] + public String Address + { + get { return _address; } + set { _address = value; } + } + + [Property] + public String City + { + get { return _city; } + set { _city = value;} + } + + [Property] + public String State + { + get { return _state; } + set { _state = value; } + } + + [Property] + public String ZipCode + { + get { return _zipcode; } + set { _zipcode = value; } + } + } + + [ActiveRecord("Companies")] + public class Company : ActiveRecordBase + { + private int id; + private PostalAddress _address; + + public Company() + { + } + + public Company(string name) + { + this.name = name; + } + + [PrimaryKey] + public int Id + { + get { return id; } + set { id = value; } + } + + [Nested] + public PostalAddress Address + { + get { return _address; } + set { _address = value; } + } + } + + + + + + Informs ActiveRecord that the marked property is the parent of a nested element + + + + + Associates a foreign table where the current class + and the target class share their primary key. + + + The following code exemplifies two classes that maps + to two tables sharing the primary key: + + [ActiveRecord("Employee")] + public class Employee : ActiveRecordBase + { + private int id; + private Award award; + + [PrimaryKey(PrimaryKeyType.Native, "EmployeeID")] + public int ID + { + get { return this.id; } + set { this.id = value; } + } + + [OneToOne] + public Award Award + { + get { return this.award; } + set { this.award = value; } + } + } + + [ActiveRecord("Award")] + public class Award : ActiveRecordBase + { + private Employee employee; + private int id; + + public Award() + { + } + + public Award(Employee employee) + { + this.employee = employee; + } + + [OneToOne] + public Employee Employee + { + get { return this.employee; } + set { this.employee = value; } + } + + [PrimaryKey(PrimaryKeyType.Foreign, "EmployeeID")] + public int ID + { + get { return this.id; } + set { this.id = value; } + } + + public static Award[] FindAll() + { + return ((Award[]) (ActiveRecordBase.FindAll(typeof(Award)))); + } + + public static void DeleteAll() + { + ActiveRecordBase.DeleteAll( typeof(Award) ); + } + } + Employee emp = new Employee(); + emp.Name = "john doe"; + emp.Save(); + + Award award = new Award(emp); + award.Description = "Invisible employee"; + award.Save(); + + + + Usually classes that uses the primary key + generated elsewhere (foreign) uses the PrimaryKey attribute with the + generator type PrimaryKeyType.Foreign + + + + + Allows one to reference a different type + than the property type + + + + + From NHibernate docs: specifies which operations should be + cascaded from the parent object to the associated object. + + + + + From NHibernate docs: Chooses between outer-join fetching + or sequential select fetching. + + + Defaults to + + + + + From NHibernate docs: The name of a property of the + associated class that is joined to the primary key + of this class. If not specified, the primary key of + the associated class is used. + + + + + From NHibernate docs: specifies that a foreign key + constraint on the primary key of the mapped table + references the table of the associated class. + This option affects the order in which Save() and + Delete() are cascaded (and is also used by the + schema export tool). + + + + + Gets or sets the name of the foreign key constraint generated for + an association. NHibernate will only use the ForeignKey name one + the inherited class and Constrained = true. + + + + + Define the possible strategies to set the Primary Key values + + + + + Use Identity column (auto number) + Note: This force an immediate call to the DB when Create() is called + + + + + Use a sequence + + + + + Use the HiLo algorithm to get the next value + + + + + Use a sequence and a HiLo algorithm - better performance on Oracle + + + + + Use the hex representation of a unique identifier + + + + + Use the string representation of a unique identifier + + + + + Generate a Guid for the primary key + Note: You should prefer using GuidComb over this value. + + + + + Generate a Guid in sequence, so it will have better insert performance in the DB. + + + + + Use an identity or sequence if supported by the database, otherwise, use the HiLo algorithm + + + + + The primary key value is always assigned. + Note: using this you will lose the ability to call Save(), and will need to call Create() or Update() + explicitly. + + + + + This is a foreign key to another table + + + + + Returns a Int64 constructed from the system + time and a counter value. + + + Not safe for use in a clustser + + + + + Returns a Int64, constructed by counting from + the maximum primary key value at startup. + + + Not safe for use in a cluster + + + + + A custom generator will be provided. See + + + + + Indicates the property which is the primary key. + + + public class Blog : ActiveRecordBase + { + ... + + [PrimaryKey(PrimaryKeyType.Native)] + public int Id + { + get { return _id; } + set { _id = value; } + } + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + A custom identifier + generator (that implements ). + + + + Initializes a new instance of the class. + + The generator. + + + + Initializes a new instance of the class. + + The generator. + The PK column. + + + + Initializes a new instance of the class. + + The PK column. + + + + Gets or sets the generator. + + The generator. + + + + Gets or sets the column name + + The column. + + + + Gets or sets the unsaved value. + + The unsaved value. + + + + Gets or sets the name of the sequence. + + The name of the sequence. + + + + Gets or sets the type of the column. + + The type of the column. + + + + Gets or sets the length of values in the column + + The length. + + + + Gets or sets the custom generator. + The generator must implement + + The custom generator type. + + + + Comma separated value of parameters to the generator + + + + + Define the various access strategies NHibernate will use to set/get the value + for this property. + + + + + Use the property get/set methods to get and set the value of this property + + + + [Property(Access=PropertyAccess.Property)] + public string UserName { get {... } set { ... } } + + + + + + Use the field to get/set the value. (Only valid when specify on a field). + + + + [Property(Access=PropertyAccess.Field)] + public string UserName; // notice this is a field, not property. + + + + + + Use the field that is the backing store for this property to get/set the value of this property. + The field is using the same name as the property, in camel case. + + + + string userName;//this will be use to get or set the value + + [Property(Access=PropertyAccess.FieldCamelCase)] + public string UserName { get {... } set { ... } } + + + + + + Use the field that is the backing store for this property to get/set the value of this property. + The field is using the same name as the property, in camel case and with an initial underscore + + + + string _userName;//this will be use to get or set the value + + [Property(Access=PropertyAccess.FieldCamelcaseUnderscore)] + public string UserName { get {... } set { ... } } + + + + + + Use the field that is the backing store for this property to get/set the value of this property. + The field is using the same name as the property, in pascal case and with an initial m and then underscore. + m_Name for the property Name. + + + + string m_UserName;//this will be use to get or set the value + + [Property(Access=PropertyAccess.FieldPascalcaseMUnderscore)] + public string UserName { get {... } set { ... } } + + + + + + Use the field that is the backing store for this property to get/set the value of this property. + The field is using the same name as the property, in all lower case and with inital underscore + + + + string _username;//this will be use to get or set the value + + [Property(Access=PropertyAccess.FieldLowercaseUnderscore)] + public string UserName { get {... } set { ... } } + + + + + + Use the property' getter to get the value, and use the field with the same name and in camel case + in order to set it. + + + + string _userName;//this will be use to set the value + + [Property(Access=PropertyAccess.NosetterCamelcase)] + public string UserName { get {... } set { ... } } // this will be used just to get the value + + + + + + Use the property' getter to get the value, and use the field with the same name and in camel case + with initial "_" in order to set it. + + + + string _userName;//this will be use to set the value + + [Property(Access=PropertyAccess.NosetterCamelcaseUnderscore)] + public string UserName { get {... } set { ... } } // this will be used just to get the value + + + + + + Use the property' getter to get the value, and use the field with the same name and in pascal case + with initial "m_" in order to set it. + + + + string m_UserName;//this will be use to set the value + + [Property(Access=PropertyAccess.NosetterPascalcaseMUndersc)] + public string UserName { get {... } set { ... } } // this will be used just to get the value + + + + + + Use the property' getter to get the value, and use the field with the same name and in lower case + with initial "_" in order to set it. + + + + string _username;//this will be use to set the value + + [Property(Access=PropertyAccess.NosetterLowercaseUnderscore)] + public string UserName { get {... } set { ... } } // this will be used just to get the value + + + + + + Use the property' getter to get the value, and use the field with the same name and in lower case + in order to set it. + + + + string username;//this will be use to set the value + + [Property(Access=PropertyAccess.NosetterLowercase)] + public string UserName { get {... } set { ... } } // this will be used just to get the value + + + + + + Utility class to help convert between values and + NHiberante's access strategies. + + + + + Convert to its NHibernate string + + + + + Abstract base class for custom attributes that can generate XML and return it directly. + This allows to customize the generate the XML passed to NHibernate in a flexible way. + + + + + Get the mapping xml to add to NHibernate's configuration. + Note that we allow to return more than a single mapping, each string is + treated as a seperated document. + + + + + Define the relation type for a relation. + + + + + Let Active Record guess what is the type of the relation. + + + + + An bag of items (allow duplicates) + + + + + A set of unique items + + + + + A bag of items with id + + + + + Map of key/value pairs (IDictionary) + + + + + A list of items - position in the list has meaning + + + + + Specify that this property is used for timestamping this entity + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The column name + + + + Gets or sets the column name + + The column. + + + + This attribute is used to specify that a property is the versioning property of the class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The column. + + + + Gets or sets the column name + + The column. + + + + Gets or sets the type of the column (should be an integer of some type) + + The type. + + + + Gets or sets the unsaved value for this column + + The unsaved value. + + + + Reads the configuration from a entry 'activerecord' + in the xml associated with the AppDomain + + + + + Source of configuration based on Xml + source like files, streams or readers. + + + + + Usefull for test cases. + + + + + Abstracts the source of configuration for the framework. + + + + + Implementors should return an + instance + + + + + + + Implementors should return the type that implements + the interface + + + + + Implementors should return the type that implements + the interface + + + + + Implementors should return the type that implements + the interface NHibernate.Cfg.INamingStrategy + + + + + Gets a value indicating whether this produce debug information + + true if debug; otherwise, false. + + + + Gets a value indicating whether the entities should be lazy by default. + + + true if entities should be lazy by default; otherwise, false. + + + + + Gets a value indicating whether table names are assumed plural by default. + + + true if table names should be pluralized by default; otherwise, false. + + + + + Gets or sets a value indicating whether the models should be verified against the db schema on Initialisation. + + + true if models should be verified; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Return an for the specified type. + + + + + + + Builds a InPlaceConfigurationSource set up to access a MS SQL server database using integrated security. + + The server. + The initial catalog. + + + + + Builds a InPlaceConfigurationSource set up to access a MS SQL server database using the specified username and password. + + The server. + The initial catalog. + The username. + The password. + + + + + Builds an InPlaceConfiguratioSource for the specified database. + + The database. + The connection string. + + + + + Adds the specified type with the properties + + The type. + The properties. + + + + Adds the specified type with configuration + + The type. + The config. + + + + Sets the type of the thread info. + + if we run in a web context or not + Type of the custom implementation + + + + Sets the type of the session factory holder. + + Custom implementation + + + + Sets the type of the naming strategy. + + Custom implementation type name + + + + Sets the debug flag. + + if set to true Active Record will produce debug information. + + + + Set whatever entities are lazy by default or not. + + + + + Sets the debug flag. + + if set to true Active Record will verify the models against the db schema on startup. + + + + Sets the pluralizeTableNames flag. + + if set to true Active Record will pluralize inferred table names. + + + + Processes the configuration applying any substitutions. + + The configuration + + + + Return a type that implements + the interface + + + + + + Return a type that implements + the interface + + + + + + Return a type that implements + the interface NHibernate.Cfg.INamingStrategy + + + + + + Gets a value indicating whether this produce debug information + + true if debug; otherwise, false. + + + + Gets a value indicating whether the entities should be lazy by default. + + + true if entities should be lazy by default; otherwise, false. + + + + + Gets a value indicating whether table names are assumed plural by default. + + + true if table names should be pluralized by default; otherwise, false. + + + + + Gets or Sets a value indicating whether the models should be verified against the db schema on Initialisation. + + + true if models should be verified; otherwise, false. + + + + + Sets a value indicating whether this instance is running in web app. + + + true if this instance is running in web app; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the XML file. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Populate this instance with values from the given XML node + + + + + Builds the configuration properties. + + The node. + + + + + Creates a configuration section handler. + + + Configuration context object. + + The created section handler object. + + + + Gets the sole instance. + + The instance. + + + + Enum for database types support for configuration construction. + Not to be confused by databases supported by ActiveRecord + + + + + Microsoft SQL Server + + + + + This model of a full Active Record persistent class. + + + + + For implementing the Visitor pattern. + All the nodes in the model implements this interface + + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + The mapping between a type and a model + + + + + Whatever Active Record will generate debug information or not + + + + + Whatever types that does not explicitly state that they are lazy should be lazy. + + + + + Whether the default inferred table name is plural + + + + + Initializes a new instance of the class. + + The type. + + + + Used internally register an association between a type and its model + + + + + + + Gets the for a given ActiveRecord class. + + + + + Gets an array containing the for every registered ActiveRecord class. + + + + + Get the base type is the object is lazy + + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets or sets the parent model + + The parent. + + + + Gets the type for this model + + The type. + + + + Gets or sets a value indicating whether this instance is joined sub class base. + + + true if this instance is joined sub class base; otherwise, false. + + + + + Gets or sets a value indicating whether this instance is discriminator base. + + + true if this instance is discriminator base; otherwise, false. + + + + + Gets or sets a value indicating whether this instance is discriminator sub class. + + + true if this instance is discriminator sub class; otherwise, false. + + + + + Gets or sets a value indicating whether this instance is joined sub class. + + + true if this instance is joined sub class; otherwise, false. + + + + + Gets or sets a value indicating whether this instance is nested type. + + + true if this instance is nested type; otherwise, false. + + + + + Gets or sets a value indicating whether this instance is nested type. + + + true if this instance is nested type; otherwise, false. + + + + + Gets or sets the active record attribute + + The active record att. + + + + Used only by joined subclasses + + + + + Gets or sets the timestamp model + + The timestamp. + + + + Gets or sets the version model + + The version. + + + + Gets all the imports + + The imports. + + + + Gets all the properties + + The properties. + + + + Gets all the fields + + The fields. + + + + If the object is a component, will return the objects declared parent property. + There should only be one, but implemented as a list + + + + + Gets the list of [has many to any] models + + The has many to any. + + + + Gets the list of [any] model + + The anys. + + + + Gets the list of the derived classes + + The classes. + + + + Gets the list of derived joined classes. + + The joined classes. + + + + Gets the list of components. + + The components. + + + + Gets the list of [belongs to] models + + The belongs to. + + + + Gets the list of [has many] models + + The has many. + + + + Gets the list of [has and belongs to many] models + + The has and belongs to many. + + + + Gets the list of [one to one] models + + The one to ones. + + + + Gets the list of [collection id] models + + The collection I ds. + + + + For unique Primary keys + + + + + For Composite Primary keys + + + + + Gets the list of [hilo] models + + The hilos. + + + + Gets the list of properties not mapped . + + The not mapped properties. + + + + Gets the validators. + + The validators. + + + + Gets a value indicating whether to use auto import + + true if should use auto import; otherwise, false. + + + + Gets the composite user types properties. + + The type of the composite user. + + + + Model for [Any] association, a polymorphic association without common base class + + + + + Initializes a new instance of the class. + + The prop. + Any att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the [Any] attribute + + Any att. + + + + Gets or sets the meta values. + + The meta values. + + + + Model for BelongTo - A many to one assoication between persistent entities. + + + + + Initializes a new instance of the class. + + The prop info. + The belongs to att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the belongs to attribute + + The belongs to att. + + + + This is used in IdBag scenario to specify to collection id. + + + + + Initializes a new instance of the class. + + The prop info. + The coll att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the collection ID att. + + The collection ID att. + + + + Gets or sets the hilo. + + The hilo. + + + + Model for representing a composite key + + + + + Initializes a new instance of the class. + + The prop info. + The pk att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the composite key att. + + The composite key att. + + + + Model for representing a Composite User type map. + + + + + Initializes a new instance of the class. + + The property marked with the attribute. + The metadata attribute. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property marked with the attribute. + + The property. + + + + Gets the attribute instance. + + The attribute. + + + + This model is used to represent a dependent object value type (<composite-element/> - in NHibernate talk). + + + + + Initializes a new instance of the class. + + The prop info. + The nested att. + The nested model. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the model. + + The model. + + + + Gets the has many attribute + + The has many att. + + + + Model for a persitent property that uses a field to get/set the values. + + + + + Initializes a new instance of the class. + + The field. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the field. + + The field. + + + + Gets the field attribute + + The field att. + + + + Model to HasAndBelongsToMany, which is used to model a many to many assoication. + + + + + Initializes a new instance of the class. + + The prop info. + The has many att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the has many attribute + + The has many att. + + + + Gets or sets the collection ID. + + The collection ID. + + + + Model to represent a HasMany ( one to many ) association + + + + + Initializes a new instance of the class. + + The prop info. + The has many att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the has many attribute + + The has many att. + + + + Gets/Sets the the dependent object model + + The dependent object model. + + + + This model represent a <many-to-any/> polymorphic association + + + + + Initializes a new instance of the class. + + The prop. + The has many to any att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the has many to any attribute + + The has many to any att. + + + + Gets the configuration. + + The configuration. + + + + Gets or sets the meta values. + + The meta values. + + + + I need this class to pass special configuration for the many-to-any + + + + + Initializes a new instance of the class. + + The parent. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets or sets the parent model + + The parent. + + + + Model for HiLo algorithm used to generate primary key values + + + + + Initializes a new instance of the class. + + The prop info. + The hilo att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the hilo attribute + + The hilo att. + + + + Model for importing classes so HQL queries can use them more easily. + + + + + Initializes a new instance of the class. + + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the import attribute + + The import att. + + + + Model for a joined key property in a joined subclass + + + + + Initializes a new instance of the class. + + The prop info. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the joined key attribute + + The joined key att. + + + + This model is used to represent a nested value type (<component/> - in NHibernate talk). + + + + + Initializes a new instance of the class. + + The prop info. + The nested att. + The nested model. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the model. + + The model. + + + + Gets the property. + + The property. + + + + Gets the nested attribute + + The nested att. + + + + This model is used to represent a nested value type's parent (<parent /> - in NHibernate talk). + + + + + Initializes a new instance of the class. + + The prop info. + The parent att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the nested attribute + + The nested att. + + + + Model One To One assoication + + + + + Initializes a new instance of the class. + + The prop info. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the one to one attribute + + The one to one att. + + + + Model for a Primary Key + + + + + Initializes a new instance of the class. + + The prop info. + The pk att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the primary key attribute + + The primary key att. + + + + Model for a simple persistent property + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The prop. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the property attribute + + The property att. + + + + Model for [Timestamp] properties + + + + + Initializes a new instance of the class. + + The prop. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the timestamp attribute + + The timestamp att. + + + + Model for version property on an entity + + + + + Initializes a new instance of the class. + + The prop. + The att. + + + + Accepts the specified visitor and call the relevant IVisitor.Visit***() method + + The visitor. + + + + Gets the property. + + The property. + + + + Gets the version attribute + + The version att. + + + + Base class for visitors that needs to traverse the entire Active Record Model + + + + + For implementign the visitor pattern. + + + + + Visits the top level of the model. + + The model. + + + + Visits the primary key. + + The model. + + + + Visits the composite primary key. + + The model. + + + + Visits the has many to any association + + The model. + + + + Visits any. + + The model. + + + + Visits the property. + + The model. + + + + Visits the field. + + The model. + + + + Visits the component parent reference + + The model. + + + + Visits the version. + + The model. + + + + Visits the timestamp. + + The model. + + + + Visits the key. + + The model. + + + + Visits the belongs to association + + The model. + + + + Visits the has many association + + The model. + + + + Visits the one to one association + + The model. + + + + Visits the has and belongs to many association + + The model. + + + + Visits the hilo strategy + + The model. + + + + Visits the nested (component) model + + The model. + + + + Visits the collection ID. + + The model. + + + + Visits the has many to any configuration + + The has many to any config model. + + + + Visits the import statement + + The model. + + + + Visits the dependent object model + + The model. + + + + Visits the custom composite user type. + + The model. + + + + Visits the node. + + The visitable. + + + + Visits the nodes. + + The nodes. + + + + Visits the model. + + The model. + + + + Visits the primary key. + + The model. + + + + Visits the composite primary key. + + The model. + + + + Visits the has many to any. + + The model. + + + + Visits the property. + + The model. + + + + Visits the field. + + The model. + + + + Visits the component parent + + The model. + + + + Visits any. + + The model. + + + + Visits the version. + + The model. + + + + Visits the timestamp. + + The model. + + + + Visits the key. + + The model. + + + + Visits the belongs to. + + The model. + + + + Visits the has many. + + The model. + + + + Visits the one to one. + + The model. + + + + Visits the has and belongs to many. + + The model. + + + + Visits the hilo. + + The model. + + + + Visits the nested. + + The model. + + + + Visits the collection ID. + + The model. + + + + Visits the has many to any config. + + The has many to any config model. + + + + Visits the import. + + The model. + + + + Visits the Dependent Object à + + The model + + + + Visits the custom composite user type. + + The model. + + + + Guesses the type of the other end. + + The type. + Type of the property. + + + + + Connects with their parents + + + + + + Initializes a new instance of the class. + + The ar collection. + + + + Visits the model. + + The model. + + + + Visits the nested. + + The model. + + + + Visits the collection ID. + + The model. + + + + Visits the hilo model + + The model. + + + + Traverse the tree checking the semantics of the relation and + association. The goal is to raise clear exceptions with tips of how + to fix any error. + It also tries to infer as much information from the class / attribute model as possible so it can + complete the missing information without the user needing to specify it. + + + + + Initializes a new instance of the class. + + The ar collection. + + + + Visits the model. + + + Check that the model: + - Define only a discriminator or a join subclass, not both + - Doesn't specify version/timestamp property on a joined subclass / discriminator subclass + - Validate that the custom entity persister implements IEntityPersister + - Validate the joined subclasses has a [JoinedKey] to map back to the parent table + - Validate that the class has a PK + + The model. + + + + Visits the primary key. + + + Infer column name and the reverse property if using [OneToOne] + + The model. + + + + Visits the composite primary key. + + + Validate that the composite key type is implementing GetHashCode() and Equals(), is mark serializable. + Validate that the compose key is compose of two or more columns + + The model. + + + + Visits the property. + + + Infer column name and whatever this propery can be null or not + Also catch common mistake of try to use [Property] on an entity, instead of [BelongsTo] + + The model. + + + + Visits the field. + + + Infer column name and nullablity + + The model. + + + + Visits the key. + + + Infer column name + + The model. + + + + Visits the version. + + + Infer column name + + The model. + + + + Visits the timestamp. + + + Infer column name + + The model. + + + + Visits the belongs to. + + + Infer column name and type + Verify that the property is virtual if the class was marked lazy. + + The model. + + + + Visit the has many to any + + The model. + + + + Visits any. + + The model. + + + + Visits the has many. + + + Guess the type of the relation, if not specified explicitly + Verify that the assoication is valid on [HasMany] + Validate that required information is specified + Infer the other side of the assoication and grab require data from it + + The model. + + + + Visits the has and belongs to many. + + + Verify that a link table was specified + Verify that a key was specified and that it is valid + Verify that required information was specified + + The model. + + + + Visits the one to one. + + + Infer the type on the other side + + The model. + + + + Visits the nested model + + + Infer the column name and applies and column prefixes specified + + The model. + + + + Visits the custom composite user type. + + + Apply any column prefixes specified + + The model. + + + + Gets the index type of a mapped dictionary. + + Type of the property. + The index type of a map element + + + + Gets the index type of a mapped dictionary. + + Type of the property. + The index type of a map element + + + + Traverse the tree emitting proper xml configuration + + + + + Resets this instance. + + + + + Creates the XML. + + The model. + + + + Visits the model. + + The model. + + + + Visits the primary key. + + The model. + + + + Visits the composite primary key. + + The model. + + + + Visits the import. + + The model. + + + + Visits the property. + + The model. + + + + Visits the field. + + The model. + + + + Visits the parent + + The reference model. + + + + Visits any. + + The model. + + + + Visits the has many to any. + + The model. + + + + Visits the has many to any config. + + The model. + + + + Visits the version. + + The model. + + + + Visits the timestamp. + + The model. + + + + Visits the key. + + The model. + + + + Visits the one to one. + + The model. + + + + Visits the belongs to. + + The model. + + + + Visits the has many. + + The model. + + + + Visits the has and belongs to many. + + The model. + + + + Visits the nested. + + The model. + + + + Visits the dependent object. + + The model + + + + Visits the collection ID. + + The model. + + + + Visits the hilo. + + The model. + + + + Visits the custom composite user type. + + The model. + + + + Create a valid name from a type, without including all the version and public key + information + + + + + Gets the XML. + + The XML. + + + + Bulids an from a type and does some inital validation. + + + + + Creates a from the specified type. + + The type. + + + + + Populates the model from tye type + + The model. + The type. + + + + Remove the generic part from the type name. + + + + + + + Gets the models. + + The models. + + + + Gets the validator registry used to create the validators + + + + + Map System.Type to their ActiveRecordModel + + + + + Adds the specified model. + + The model. + + + + Determines whether the collection contains the specified type. + + The type. + + true if the collection contains the specified type; otherwise, false. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified type. + + + + + + Generate xml from assembly level attributes. + This is useful if we need to have type-less configuration, such as imports, named queries, etc. + + + + + Create a new instnace + + + + + Reset this generator and prepare to generate xml from new assembly. + + + + + Generate XML from assembly attributes. + If it can't find relevant attributes, returns null. + + + + + The Inflector class transforms words from one + form to another. For example, from singular to plural. + + + + + Return the plural of a word. + + The singular form + The plural form of + + + + Return the singular of a word. + + The plural form + The singular form of + + + + Capitalizes a word. + + The word to be capitalized. + capitalized. + + + + Any object which intent to change a NHibernate query must implement + this interface. + + + + + Applies this modifier to the query. + + The query + + + + Represents a query parameter. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Initializes a new instance of the class. + + The name. + The value. + The type. + + + + Initializes a new instance of the class. + + The position. + The value. + + + + Initializes a new instance of the class. + + The position. + The value. + The type. + + + + Initializes a new instance of the class. + + The name. + The value. + The type. + + + + Initializes a new instance of the class. + + The name. + The value. + + + + It is important to keep this constructor as is, to avoid + confusion with the + overload. + + + + + It is important to keep this constructor as is, to avoid + confusion with the + overload. + + + + + Add this parameter to the . + + The query + + Is there a cleaner way to do this, without reflection or complex + hierarchies? + + + + + The position of the positional parameter, or -1 + if this is a named parameter. + + + + + The name of the named parameter, or null + if this is a positional parameter. + + + + + The parameter value. + + + + + The NHibernate type. + + + + + Limits a query to the specified results. + + + + + Initializes a new instance of the class. + + The first result. + The max results. + + + + Initializes a new instance of the class. + + The max results. + + + + Applies this modifier to the query. + + The query + + + + Gets the first result. + + The first result. + + + + Gets the max results. + + The max results. + + + + Represents a SQL query return definition. + See for more information. + + + + + Initializes a new instance of the class. + + Type of the return object. + Gets the alias for the object + + + + Applies this modifier to the query. + + The query + + + + Gets the type of the returned object + + The type of the return. + + + + Gets the alias for the object + + The return alias. + + + + Base class for all ActiveRecord queries. + + + + + Represents an ActiveRecord Query. + + + + + Executes the specified query and return the results + + The session to execute the query in. + + + + + Enumerates over the result of the query. + Note: Only use if you expect most of your values to already exist in the second level cache! + + + + + Gets the target type of this query + + + + + list of modifiers for the query + + + + + Initializes a new instance of the class. + + The type. + + + + Executes the specified query and return the results + + The session to execute the query in. + + + + + Enumerates over the result of the query. + Note: Only use if you expect most of your values to already exist in the second level cache! + + + + + + + Simply creates the query and then call its method. + + The NHibernate's + + + + Simply creates the query and then call its method. + Note: Only use when you expect most of the results to be in the second level cache + + The NHibernate's + + + + Add this query to a multiquery + + an ISession shared by all queries in the multiquery + the IMultiQuery that will receive the newly created query + + + + Creates the instance. + + + + + Just a default clone implementation... + + + + + Adds a query modifier, to be applied with . + + The modifier + + + + Applies the modifiers added with . + + The query in which to apply the modifiers + + This method is not called automatically + by , but is called from + . + + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + + If the HQL clause selects more than one field, or a join is performed + without using fetch join, the contents of the result list will + be of type object[]. Specify which index in this array should be used to + compose the new result array. Use -1 to ignore this parameter. + + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + Gets the internal list of modifiers used by the specified query. + NOT INTENTED FOR NORMAL USE. + + + + + Gets the target type of this query + + + + + Use the specified logger to output diagnostic messages. + + + + + Criteria Query + Note: This query can not be included in a MultiQuery. + the problem is that NHibernate does not have a real CriteriaQuery class + + + + + Base class for all HQL or SQL-based queries. + + + + + Initializes a new instance of the class. + + Type of the target. + The query. + + + + Initializes a new instance of the class. + + Type of the target. + The query. + The positional parameters. + + + + Initializes a new instance of the class. + + Type of the target. + The query language. + The query. + + + + Initializes a new instance of the class. + + Type of the target. + The query language. + The query. + The positional parameters. + + + + Sets a parameter with the given name. + + Name of the parameter. + The value. + + + + Sets a parameter with the given name and type + + Name of the parameter. + The value. + The type. + + + + Sets a parameter with the given name with a list of values + + Name of the parameter. + The list. + + + + Sets a parameter with the given name with a list of values and type + + Name of the parameter. + The list. + The type. + + + + Sets the query range (paging) + + The first result. + The maximum number of results returned (page size) + + + + Sets the query range (maximum number of items returned) + + The maximum number of results. + + + + Adds a SQL query return definition. + See for more information. + + + + + Creates the instance. + + + + + + + The query text. + + + + + Initializes a new instance of the class. + + The target type. + Criteria applied to the query + + + + Initializes a new instance of the class. + + The target type. + Criteria applied to the query + + + + Executes the query. + + The NHibernate's + ArrayList as an object + + + + wrapper for an IMultiQuery that executes a collection of queries. + + + + + Initializes a new instance of the class. + + the root type for all of the queries that will be included in the IMultiQuery + + + + Initializes a new instance of the class. + + the root type for all of the queries that will be included in the IMultiQuery + an array of IActiveRecordQuery + + + + Add an IActiveRecordQuery to our + + IActiveRecordQuery to be added to the MultiQuery + + + + Executes the specified query and return the results + + The session to execute the query in. + an array of results, one for each query added + + + + (Not Implemented!) + Enumerates over the result of the query. + Note: Only use if you expect most of your values to already exist in the second level cache! + + + + + Gets the target type of this query + + + + + Query the database for a count (using COUNT(*) ) of all the entites of the specified type. + Optionally using a where clause; + Note: If Criteria are used, this query can not be included in a MultiQuery. + + + + + Initializes a new instance of the class. + + The target type. + The filter. + The parameters. + + + + Initializes a new instance of the class. + + The target type. + + + + Initializes a new instance of the class. + + The target type. + Criteria applied to the query + + + + Initializes a new instance of the class. + + The target type. + Criteria applied to the query + + + + Executes the query. + + The NHibernate's + System.Int32 as object + + + + defines the possible query langauges + + + + + Hibernate Query Language + + + + + Structured Query Language + + + + + Represents an ActiveRecord Query. + + The resulting object type + + + + Executes the query using specified session. + + The session. + + + + + Performs a projected selection from an entity, lifting only the required fields. + Similar to SELECT Id,Name FROM MyTable instead of selecting everything. + It is possible to combine this with grouping. + + The active record entity type + The result value to use: object[] means returning as is + /// + + proj = new ProjectionQuery(Projections.Property("Title"), Projections.Property("Id")); + ICollection posts = proj.Execute(); + foreach(PostTitleAndId titleAndId in posts) + { + //push to site... + } + ]]> + + + + + + Create a new with the given projections. + At least one projections must be given + + The projections to use in the query + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + Criteria to select by + The order by which to get the result + The projections + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + Criteria to select by + The order by which to get the result + The projections + + + + Create a new with the given projections. + At least one projections must be given. + The results will be loaded according to the order specified + + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + + + + Sets the query range. + + The first row to return. + The max number of rows to return. + The instance + + + + Executes the specified query and return the results + + The session to execute the query in. + IList<TResultItem> cast to object because of interface + + + + Enumerates over the result of the query. + Note: Only use if you expect most of your values to already exist in the second level cache! + + + + + Executes the specified query and return the results + + the result of the query + + + + Gets the target type of this query + + + + + This is used to convert the resulting tuples into strongly typed objects. + + + + + + Convert the tuples into a strongly typed object + + + + + Default implemenation of ProjectionQuery that returns an Untyped object array tuples + + + + + Create a new with the given projections. + At least one projections must be given + + The projections to use in the query + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + Criteria to select by + The order by which to get the result + The projections + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + Criteria to select by + The order by which to get the result + The projections + + + + Create a new with the given projections. + At least one projections must be given. + The results will be loaded according to the order specified + + + + + Create a new with the given projections. + At least one projections must be given. + The DetachedCriteria is mostly used for filtering, although it is possible to use it for ordering, limiting the + result set, etc. + Note: Do not call SetProjection() on the detached criteria, since that is overwritten. + + + + + Perform a scalar projection ( aggeregate ) type of query: + avg, max, count(*), etc. + + The type of the entity we are querying + The type of the scalar from this query + + + ScalarProjectionQuery<Blog, int> proj = new ScalarProjectionQuery<Blog, int>(Projections.RowCount()); + int rowCount = proj.Execute(); + + + + + + Initializes a new instance of the class. + + The projection. + The criterions. + + + + Initializes a new instance of the class. + + The projection. + The detached criteria. + + + + Executes the specified query and return the results + + The session to execute the query in. + the result of the query + + + + Enumerates over the result of the query. + Always returns a single result + + + + + Executes the specified query and return the results + + The session to execute the query in. + the result of the query + + + + Executes the specified query and return the results + + the result of the query + + + + Gets the target type of this query + + + + + + Query that return a single result + + + + + Initializes a new instance of the class. + + Type of the target. + The query. + The positional parameters. + + + + Initializes a new instance of the class. + + Type of the target. + The query. + + + + Initializes a new instance of the class. + + Type of the target. + The query language. + The query. + The positional parameters. + + + + Initializes a new instance of the class. + + Type of the target. + The query language. + The query. + + + + Executes the query and returns its scalar result. + + The NHibernate's + The query's scalar result + + + + Creates a single-position object array containing + the query's scalar result. + + The NHibernate's + An object[1] containing the query's scalar result. + + + + Represents a query that can result in a value + of the type . + + The resulting object type + + If the query result is null, and is a value type, + the default value for that type will be returned. + + + + + Creates a new ScalarQuery for the giving , + using the specified positional and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The query + The positional positionalParameters + + + + Creates a new ScalarQuery for the giving and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The query + + + + Creates a new ScalarQuery for the giving , + using the specified positional and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The language of the query + The query + The positional positionalParameters + + + + Creates a new ScalarQuery for the giving and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The language of the query + The query + + + + Executes the query and gets the result. + + + + + Simple query. + + + + + Creates a new SimpleQuery. + + + + + Creates a new SimpleQuery. + + + + + Creates a new SimpleQuery. + + + + + Creates a new SimpleQuery. + + + + + Executes the query and converts the results into a strongly-typed + array of . + + The NHibernate's + + + + Represents a query that can result in an array of + objects of the type . + + The resulting object type + + + + Creates a new SimpleQuery for the giving , + using the specified positional . + The target ActiveRecord type is . + + The query + The positional parameters + + + + Creates a new SimpleQuery for the giving , + using the specified positional . + The target ActiveRecord type is . + + The query + The query language + The positional parameters + + + + Creates a new SimpleQuery for the giving , + using the specified positional and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The query + The positional parameters + + + + Creates a new SimpleQuery for the giving , + using the specified positional and + the target ActiveRecord type specified in . + + The target ActiveRecord type + The query language + The query + The positional parameters + + + + Executes the query and gets the results. + + + + + Enumerates the query results. Better suited for queries + which might return large results. + + + + It might not look obvious at first, but + will call our + , which will call our + , which will convert + the NHibernate's result + returned by + into a generic . + So, all we need to do is to cast it back to . + + + + + Simply creates the query and then call its method. + Note: Only use when you expect most of the results to be in the second level cache + + The NHibernate's + + + + + Needed to avoid CS1911. + + + + + Executes the query and converts the results into a strongly-typed + array of . + + The NHibernate's + + + + Abstract implementation + + + + + Contract for implementation of scopes. + + + A scope can implement a logic that affects + AR for the scope lifetime. Session cache and + transaction are the best examples, but you + can create new scopes adding new semantics. + + The methods on this interface are mostly invoked + by the + implementation + + + + + + Flushes the sessions that this scope + is maintaining + + + + + This method is invoked when no session was available + at and the + just created one. So it registers the session created + within this scope using a key. The scope implementation + shouldn't make any assumption on what the key + actually is as we reserve the right to change it + + + an object instance + An instance of ISession + + + + This method is invoked when the + + instance needs a session instance. Instead of creating one it interrogates + the active scope for one. The scope implementation must check if it + has a session registered for the given key. + + + an object instance + true if the key exists within this scope instance + + + + This method should return the session instance associated with the key. + + an object instance + the session instance or null if none was found + + + + If the returned + true then this method is invoked to allow + the scope to create a properly configured session + + From where to open the session + the NHibernate interceptor + the newly created session + + + + This method will be called if a session action fails. + The scope may then decide to use an different approach to flush/dispose it. + + The session that failed + + + + Returns the defined + for this scope + + + + + Returns the defined + for this scope + + + + + Implementors should return true if they + want that their scope implementation + be in charge of creating the session + + + + + Map between a key to its session + + + + + Initializes a new instance of the class. + + The flush action. + The type. + + + + Flushes the sessions that this scope + is maintaining + + + + + This method is invoked when the + + instance needs a session instance. Instead of creating one it interrogates + the active scope for one. The scope implementation must check if it + has a session registered for the given key. + + + an object instance + + true if the key exists within this scope instance + + + + + This method is invoked when no session was available + at and the + just created one. So it registers the session created + within this scope using a key. The scope implementation + shouldn't make any assumption on what the key + actually is as we reserve the right to change it + + + an object instance + An instance of ISession + + + + This method should return the session instance associated with the key. + + an object instance + + the session instance or null if none was found + + + + + If the returned + true then this method is invoked to allow + the scope to create a properly configured session + + From where to open the session + the NHibernate interceptor + the newly created session + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Initializes the specified session. + + The session. + + + + Performs the disposal. + + The sessions. + + + + Performs the disposal. + + The sessions. + if set to true [flush]. + if set to true [close]. + + + + Discards the sessions. + + The sessions. + + + + Marks the session as failed + + The session + + + + Sets the flush mode. + + The session. + + + + Gets the sessions. + + + + + + Removes the session. + + The session. + + + + Returns the defined + for this scope + + + + + Returns the defined + for this scope + + + + + Implementors should return true if they + want that their scope implementation + be in charge of creating the session + + + + + + Base implementation. It's up + to derived classes to provide a correct implementation + of CurrentStack only + + + + + Implementation of this interface provide a way to get the current scope. + This is used by the rest of the Active Record framework to grab a scope (and from it a session). + + + + + Gets the registered scope. + + + + + + Registers the scope. + + The scope. + + + + Unregister the scope. + + The scope. + + + + Gets the current stack. + + The current stack. + + + + Gets a value indicating whether this instance has initialized scope. + + + true if this instance has initialized scope; otherwise, false. + + + + + Registers the scope. + + The scope. + + + + Gets the registered scope. + + + + + + Unregister the scope. + + The scope. + + + + Gets the current stack. + + The current stack. + + + + Gets a value indicating whether this instance has initialized scope. + + + true if this instance has initialized scope; otherwise, false. + + + + + Still very experimental and it's not bullet proof + for all situations + + + + + Initializes a new instance of the class. + + The connection. + + + + Initializes a new instance of the class. + + The connection. + The flush action. + + + + This method is invoked when no session was available + at and the + just created one. So it registers the session created + within this scope using a key. The scope implementation + shouldn't make any assumption on what the key + actually is as we reserve the right to change it + + + an object instance + An instance of ISession + + + + This method is invoked when the + + instance needs a session instance. Instead of creating one it interrogates + the active scope for one. The scope implementation must check if it + has a session registered for the given key. + + + an object instance + + true if the key exists within this scope instance + + + + + This method should return the session instance associated with the key. + + an object instance + + the session instance or null if none was found + + + + + Performs the disposal. + + The sessions. + + + + If the returned + true then this method is invoked to allow + the scope to create a properly configured session + + From where to open the session + the NHibernate interceptor + the newly created session + + + + This is called when a session has a failure + + the session + + + + We want to be in charge of creating the session + + + + + + Pendent + + + + + Original behavior. Changes are persisted at the + end or before some queries. + + + + + Flush need to be controlled manually. Best choice + for readonly operations + + + + + This implementation will first try to get the current scope from the current + request, and if not found, will use a thread lcoal scope. + + + This is used for scenarios where most of the you need per request scope, but you also does some work outside a + request (in a thread pool thread, for instnace). + + + + + Implemenation of this interface provides that is compatible + with Session Per Request pattern. + + + + + Gets the current stack. + + The current stack. + + + + Define session scope types + + + + + Undefined type of session scope. + This value probably should never exist + + + + + Simple - non transactional session scope + + + + + Transactional session scope + + + + + Custom implementation of session scope. + + + + + This exception is raised when something went wrong with the scope management. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + Implementation of to + augment performance by caching the session, thus + avoiding too much opens/flushes/closes. + + + + + Is set to true if the session went stalled due to an error (usually db operations) + + + + + Initializes a new instance of the class. + + The flush action. + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The flush action. + + + + Disposes the specified discard changes. + + if set to true [discard changes]. + + + + Performs the disposal. + + The sessions. + + + + This is called when an action on a session fails + + The session + + + + Gets or sets a flag indicating whether this instance has session error. + + + true if this instance has session error; otherwise, false. + + + + + Gets the current scope + + The current. + + + + Class to allow scopes to reach the implementation + of . Also implements + the delegating the calls to + the scope set. + + + + + Gets the registered scope. + + + + + + Registers the scope. + + The scope. + + + + Unregister the scope. + + The scope. + + + + Gets the single instance. + + The instance. + + + + Gets or sets the scope info. + + The scope info. + + + + Gets the current stack. + + The current stack. + + + + Gets a value indicating whether this instance has initialized scope. + + + true if this instance has initialized scope; otherwise, false. + + + + + This implementation will first get the current scope from the current + thread. Do NOT use on web scenario (web applications or web services). + + + + + Gets the current stack. + + The current stack. + + + + Defines the transaction scope behavior + + + + + Inherits a transaction previously create on + the current context. + + + + + Always create an isolated transaction context. + + + + + Governs the behavior + on dispose if neither + nor was called + + + + + Should commit the transaction, unless + was called before the disposing the scope (this is the default behavior) + + + + + Should rollback the transaction, unless + was called before the disposing the scope + + + + + Implementation of to + provide transaction semantics + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The on dispose behavior. + + + + Initializes a new instance of the class. + + Whatever to create a new transaction or inherits an existing one + + + + Initializes a new instance of the class. + + Whatever to create a new transaction or inherits an existing one + The on dispose behavior. + + + + Initializes a new instance of the class. + + Whatever to create a new transaction or inherits an existing one + The transaction isolation level. + The on dispose behavior. + + + + Votes to roll back the transaction + + + + + Votes to commit the transaction + + + + + This method is invoked when the + + instance needs a session instance. Instead of creating one it interrogates + the active scope for one. The scope implementation must check if it + has a session registered for the given key. + + + an object instance + + true if the key exists within this scope instance + + + + + This method is invoked when no session was available + at and the + just created one. So it registers the session created + within this scope using a key. The scope implementation + shouldn't make any assumption on what the key + actually is as we reserve the right to change it + + + an object instance + An instance of ISession + + + + This method should return the session instance associated with the key. + + an object instance + + the session instance or null if none was found + + + + + Ensures that a transaction exist, creating one if neccecary + + The session. + + + + Initializes the current transaction scope using the session + + The session. + + + + Dispose of this scope + + The sessions. + + + + This is called when a session has a failure + + the session + + + + Discards the sessions. + + The sessions. + + + + Raises the on completed event + + + + + This event is raised when a transaction is completed + + + + + This implementation will first get the current scope from the current + request, thus implementing a Session Per Request pattern. + + + + + Gets the current stack. + + The current stack. + + + + Validate that the property's value is unique in the database when saved + + + + + Initializes a new instance of the class. + + + + + Perform the check that the property value is unqiue in the table + + + + true if the field is OK + + + + Builds the error message when the property value is not unique + + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Allow custom executions using the NHibernate's ISession. + + + + + Base class for all ActiveRecord classes. Implements + all the functionality to simplify the code on the + subclasses. + + + + + Base class for ActiveRecord entities + that are interested in NHibernate's hooks. + + + + + Hook to change the object state + before saving it. + + + Return true if you have changed the state. false otherwise + + + + Hook to transform the read data + from the database before populating + the object instance + + id of the obejct + list of properties and their values + Return true if you have changed the state. false otherwise + + + + Hook to perform additional tasks + before removing the object instance representation + from the database. + + + + + + Called before a flush + + + + + Called after a flush that actually ends in execution of the SQL statements required to + synchronize in-memory state with the database. + + + + + Called when a transient entity is passed to SaveOrUpdate. + + + The return value determines if the object is saved + + true - the entity is passed to Save(), resulting in an INSERT + false - the entity is passed to Update(), resulting in an UPDATE + null - Hibernate uses the unsaved-value mapping to determine if the object is unsaved + + + + + + + Called from Flush(). The return value determines whether the entity is updated + + + + an array of property indicies - the entity is dirty + an empty array - the entity is not dirty + null - use Hibernate's default dirty-checking algorithm + + + + + + + An array of dirty property indicies or null to choose default behavior + + + + + + + + + + + + + + Lifecycle method invoked during Save of the entity + + + + + Lifecycle method invoked during Update of the entity + + + + + Lifecycle method invoked during Delete of the entity + + + + + Lifecycle method invoked during Load of the entity + + + + + The global holder for the session factories. + + + + + Internally used + + The type. + The model. + + + + Internally used + + The type. + An + + + + Creates (Saves) a new instance to the database. + + The ActiveRecord instance to be created on the database + + + + Creates (Saves) a new instance to the database and flushes the session. + + The ActiveRecord instance to be created on the database + + + + Creates (Saves) a new instance to the database. + + The ActiveRecord instance to be created on the database + if set to true, the operation will be followed by a session flush. + + + + Deletes the instance from the database. + + The ActiveRecord instance to be deleted + + + + Deletes the instance from the database and flushes the session. + + The ActiveRecord instance to be deleted + + + + Deletes the instance from the database. + + The ActiveRecord instance to be deleted + if set to true, the operation will be followed by a session flush. + + + + From NHibernate documentation: + Persist all reachable transient objects, reusing the current identifier + values. Note that this will not trigger the Interceptor of the Session. + + The instance. + The replication mode. + + + + Refresh the instance from the database. + + The ActiveRecord instance to be reloaded + + + + Deletes all rows for the specified ActiveRecord type + + + This method is usually useful for test cases. + + ActiveRecord type on which the rows on the database should be deleted + + + + Deletes all rows for the specified ActiveRecord type that matches + the supplied HQL condition + + + This method is usually useful for test cases. + + ActiveRecord type on which the rows on the database should be deleted + HQL condition to select the rows to be deleted + + + + Deletes all objects, based on the primary keys + supplied on . + + The target ActiveRecord type + A list of primary keys + The number of objects deleted + + + + Persists the modification on the instance + state to the database. + + The ActiveRecord instance to be updated on the database + + + + Persists the modification on the instance + state to the database and flushes the session. + + The ActiveRecord instance to be updated on the database + + + + Persists the modification on the instance + state to the database. + + The ActiveRecord instance to be updated on the database + if set to true, the operation will be followed by a session flush. + + + + Saves the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The ActiveRecord instance to be saved + + + + Saves the instance to the database and flushes the session. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The ActiveRecord instance to be saved + + + + Saves a copy of the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The transient instance to be saved + The saved ActiveRecord instance + + + + Saves a copy of the instance to the database and flushes the session. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The transient instance to be saved + The saved ActiveRecord instance + + + + Saves the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The ActiveRecord instance to be saved + if set to true, the operation will be followed by a session flush. + + + + Saves a copy of the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The transient instance to be saved + if set to true, the operation will be followed by a session flush. + The saved ActiveRecord instance. + + + + Invokes the specified delegate passing a valid + NHibernate session. Used for custom NHibernate queries. + + The target ActiveRecordType + The delegate instance + The ActiveRecord instance + Whatever is returned by the delegate invocation + + + + Enumerates the query + Note: only use if you expect most of the values to exist on the second level cache. + + The query. + An + + + + Executes the query. + + The query. + The query result. + + + + Returns the number of records of the specified + type in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase + { + ... + + public static int CountAllUsers() + { + return Count(typeof(User)); + } + } + + + The target type. + The count result + + + + Returns the number of records of the specified + type in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase + { + ... + + public static int CountAllUsersLocked() + { + return Count(typeof(User), "IsLocked = ?", true); + } + } + + + The target type. + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + The count result + + + + Returns the number of records of the specified + type in the database + + The target type. + The criteria expression + The count result + + + + Returns the number of records of the specified + type in the database + + The target type. + The criteria expression + The count result + + + + Check if there is any records in the db for the target type + + The target type. + true if there's at least one row + + + + Check if there is any records in the db for the target type + + The target type. + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + true if there's at least one row + + + + Check if the exists in the database. + + The target type. + The id to check on + true if the ID exists; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The target type. + The criteria expression + true if an instance is found; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The target type. + The criteria expression + true if an instance is found; otherwise false. + + + + Returns all instances found for the specified type according to the criteria + + The target type. + The criteria. + An of objects. + The of results. + + + + Returns all instances found for the specified type. + + The target type. + The of results + + + + Returns all instances found for the specified type + using sort orders and criteria. + + The The target type. + An of objects. + The criteria expression + The of results. + + + + Returns all instances found for the specified type + using criteria. + + The target type. + The criteria expression + The of results. + + + + Finds records based on a property value - automatically converts null values to IS NULL style queries. + + The target type + A property name (not a column name) + The value to be equals to + The of results. + + + + Finds records based on a property value - automatically converts null values to IS NULL style queries. + + The target type + The column name to be ordered ASC + A property name (not a column name) + The value to be equals to + The of results. + + + + Finds an object instance by an unique ID + + The AR subclass type + ID value + The object instance. + + + + Finds an object instance by an unique ID + + The AR subclass type + ID value + true if you want to catch an exception + if the object is not found + The object instance. + if throwOnNotFound is set to + true and the row is not found + + + + Searches and returns the first row. + + The target type. + The criteria. + The sort order - used to determine which record is the first one. + A targetType instance or null. + + + + Searches and returns the first row. + + The target type + The sort order - used to determine which record is the first one + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The target type + The criteria expression + A targetType instance or null + + + + Searches and returns a row. If more than one is found, + throws + + The target type + The criteria expression + A targetType instance or null + + + + Searches and returns a row. If more than one is found, + throws + + The target type + The criteria + A targetType instance or null + + + + Returns a portion of the query results (sliced) + + The target type. + The number of the first row to retrieve. + The maximum number of results retrieved. + An of objects. + The criteria expression + The sliced query results. + + + + Returns a portion of the query results (sliced) + + The target type. + The number of the first row to retrieve. + The maximum number of results retrieved. + An of objects. + The criteria expression + The sliced query results. + + + + Returns a portion of the query results (sliced) + + The target type. + The number of the first row to retrieve. + The maximum number of results retrieved. + The criteria expression + The sliced query results. + + + + Returns a portion of the query results (sliced) + + The target type. + The number of the first row to retrieve. + The maximum number of results retrieved. + The criteria expression + The sliced query results. + + + + Invokes the specified delegate passing a valid + NHibernate session. Used for custom NHibernate queries. + + The delegate instance + Whatever is returned by the delegate invocation + + + + Saves the instance information to the database. + May Create or Update the instance depending + on whether it has a valid ID. + + + If within a the operation + is going to be on hold until NHibernate (or you) decides to flush + the session. + + + + + Saves the instance information to the database. + May Create or Update the instance depending + on whether it has a valid ID. + + + Even within a the operation + is going to be flushed immediately. This might have side effects such as + flushing (persisting) others operations that were on hold. + + + + + Saves a copy of the instance information to the database. + May Create or Update the instance depending + on whether it has a valid ID. + + An saved ActiveRecord instance + + If within a the operation + is going to be on hold until NHibernate (or you) decides to flush + the session. + + + + + Saves a copy of the instance information to the database. + May Create or Update the instance depending + on whether it has a valid ID. + + A saved ActiveRecord instance + + Even within a the operation + is going to be flushed immediately. This might have side effects such as + flushing (persisting) others operations that were on hold. + + + + + Creates (Saves) a new instance to the database. + + + If within a the operation + is going to be on hold until NHibernate (or you) decides to flush + the session. + + + + + Creates (Saves) a new instance to the database. + + + Even within a the operation + is going to be flushed immediately. This might have side effects such as + flushing (persisting) others operations that were on hold. + + + + + Persists the modification on the instance + state to the database. + + + If within a the operation + is going to be on hold until NHibernate (or you) decides to flush + the session. + + + + + Persists the modification on the instance + state to the database. + + + Even within a the operation + is going to be flushed immediately. This might have side effects such as + flushing (persisting) others operations that were on hold. + + + + + Deletes the instance from the database. + + + If within a the operation + is going to be on hold until NHibernate (or you) decides to flush + the session. + + + + + Deletes the instance from the database. + + + Even within a the operation + is going to be flushed immediately. This might have side effects such as + flushing (persisting) others operations that were on hold. + + + + + Refresh the instance from the database. + + + + + Return the type of the object with its PK value. + Useful for logging/debugging + + A string representation of this object. + + + + Ascending Order + + + Returns an array of Ascending instances specifing which properties to use to + order a result. + + List of property names to order by ascending + Array of objects suitable for passing to FindAll and variants + + + + Descending Order + + + Returns an array of Descending instances specifing which properties to use to + order a result. + + List of property names to order by descending + Array of objects suitable for passing to FindAll and variants + + + + Base class for all ActiveRecord Generic classes. + Implements all the functionality to simplify the code on the subclasses. + + + + + Creates (Saves) a new instance to the database. + + The ActiveRecord instance to be created on the database + + + + Deletes the instance from the database. + + The ActiveRecord instance to be deleted + + + + Deletes all rows for the specified ActiveRecord type + + + This method is usually useful for test cases. + + + + + Deletes all rows for the specified ActiveRecord type that matches + the supplied HQL condition + + + This method is usually useful for test cases. + + HQL condition to select the rows to be deleted + + + + Deletes all objects, based on the primary keys + supplied on . + + The number of objects deleted + + + + Refresh the instance from the database. + + The ActiveRecord instance to be reloaded + + + + Persists the modification on the instance + state to the database. + + The ActiveRecord instance to be updated on the database + + + + Saves the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The ActiveRecord instance to be saved + + + + Saves a copy of the instance to the database. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The transient instance to be saved + The saved ActiveRecord instance. + + + + Invokes the specified delegate passing a valid + NHibernate session. Used for custom NHibernate queries. + + The delegate instance + The ActiveRecord instance + Whatever is returned by the delegate invocation + + + + Executes the query and return a strongly typed result + + The query. + The query result. + + + + Returns the number of records of in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase<User> + { + ... + + public static int CountAllUsers() + { + return Count(); // Equivalent to: Count(typeof(User)); + } + } + + + The count query result + + + + Returns the number of records of in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase<User> + { + ... + + public static int CountAllUsersLocked() + { + return Count("IsLocked = ?", true); // Equivalent to: Count(typeof(User), "IsLocked = ?", true); + } + } + + + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + The count result + + + + Check if any instance matching the criteria exists in the database. + + The criteria expression + The count result + + + + Returns the number of records of the specified + type in the database + + The criteria expression + The count result + + + + Check if there is any records in the db for + + true if there's at least one row + + + + Check if there is any records in the db for + + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + true if there's at least one row + + + + Check if the exists in the database. + + The System.Type of the PrimaryKey + The id to check on + true if the ID exists; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The criteria expression + true if an instance is found; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The criteria expression + true if an instance is found; otherwise false. + + + + Returns all the instances that match the detached criteria. + + Detached criteria + Optional ordering + All entities that match the criteria + + + + Returns all instances found for + + An of + + + + Returns all instances found for the specified type + using sort orders and criteria. + + An object. + The criteria expression + The of results. + + + + Returns all instances found for + using sort orders and criteria. + + + + An of + + + + Returns all instances found for + using criteria. + + + An of + + + + Finds records based on a property value + + A property name (not a column name) + The value to be equals to + An of + + + + Finds records based on a property value + + The column name to be ordered ASC + A property name (not a column name) + The value to be equals to + An of + + + + Finds an object instance by an unique ID + + ID value + if the row is not found + T + + + + Finds an object instance by an unique ID. + If the row is not found this method will not throw an exception. + + ID value + A + + + + Finds an object instance by an unique ID for + + ID value + A + + + + Finds an object instance by a unique ID for + + ID value + true if you want to catch an exception + if the object is not found + A + if throwOnNotFound is set to + true and the row is not found + + + + Searches and returns the first row for . + + Detached criteria. + The sort order - used to determine which record is the first one. + A targetType instance or null. + + + + Searches and returns the first row for + + The sort order - used to determine which record is the first one + The criteria expression + A targetType instance or null + + + + Searches and returns the first row for + + The sort order - used to determine which record is the first one + The criteria expression + A targetType instance or null + + + + Searches and returns the first row for + + The criteria expression + A targetType instance or null + + + + Searches and returns a row. If more than one is found, + throws + + The criteria expression + A targetType instance or null + + + + Searches and returns a row. If more than one is found, + throws + + The criteria + A targetType instance or null + + + + Returns a portion of the query results (sliced) + + The number of the first row to retrieve. + The maximum number of results retrieved. + An of objects. + The criteria expression + The sliced query results. + + + + Returns a portion of the query results (sliced) + + The number of the first row to retrieve. + The maximum number of results retrieved. + The criteria expression + The sliced query results. + + + + Returns a portion of the query results (sliced) + + The number of the first row to retrieve. + The maximum number of results retrieved. + An of objects. + The criteria expression + The sliced query results. + + + + This exception is raised when Active Record encounters a problem + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + Exception thrown when an error is detected on the ActiveRecord initialization phase. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + Allow programmers to use the + ActiveRecord functionality without direct reference + to + + + + + Invokes the specified delegate passing a valid + NHibernate session. Used for custom NHibernate queries. + + The target ActiveRecordType + The delegate instance + The ActiveRecord instance + Whatever is returned by the delegate invocation + + + + Finds an object instance by its primary key. + + The AR subclass type + ID value + true if you want an exception to be thrown + if the object is not found + if throwOnNotFound is set to + true and the row is not found + + + + Finds an object instance by its primary key. + + The AR subclass type + ID value + + + + Searches and returns the first row. + + The target type + The sort order - used to determine which record is the first one + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The target type + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The target type. + The criteria. + The sort order - used to determine which record is the first one. + A targetType instance or null. + + + + Searches and returns the first row. + + The target type + The criteria expression + A targetType instance or null + + + + Searches and returns the a row. If more than one is found, + throws + + The target type + The criteria expression + A targetType instance or null + + + + Searches and returns a row. If more than one is found, + throws + + The target type + The criteria + A targetType instance or null + + + + Returns a portion of the query results (sliced) + + + + + Returns a portion of the query results (sliced) + + + + + Returns a portion of the query results (sliced) + + + + + Returns a portion of the query results (sliced) + + + + + Returns all instances found for the specified type. + + + + + + + Returns all instances found for the specified type + using sort orders and criterias. + + + + + + + + + Returns all instances found for the specified type + using criterias. + + + + + + + + Returns all instances found for the specified type according to the criteria + + + + + Finds records based on a property value - automatically converts null values to IS NULL style queries. + + The target type + A property name (not a column name) + The value to be equals to + + + + + Finds records based on a property value - automatically converts null values to IS NULL style queries. + + The target type + The column name to be ordered ASC + A property name (not a column name) + The value to be equals to + + + + + Deletes all entities of the specified type (and their inheritors) + + The type. + + + + Deletes all entities of specified type that match the HQL where clause + + The type. + The where. + + + + Deletes all objects, based on the primary keys + supplied on . + + The target ActiveRecord type + A list of primary keys + The number of objects deleted + + + + Enumerates the query. + Note: Only use if you expect most of the values to be on the second level cache + + The query + + + + + Executes the query + + The query + + + + + Returns the number of records of the specified + type in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase + { + ... + + public static int CountUsers() + { + return Count(typeof(User)); + } + } + + + Type of the target. + The count result + + + + Returns the number of records of the specified + type in the database + + + + [ActiveRecord] + public class User : ActiveRecordBase + { + ... + + public static int CountUsersLocked() + { + return Count(typeof(User), "IsLocked = ?", true); + } + } + + + Type of the target. + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + The count result + + + + Returns the number of records of the specified + type in the database + + The target type. + The criteria expression + The count result + + + + Returns the number of records of the specified + type in the database + + The target type. + The criteria expression + The count result + + + + Check if there is any records in the db for the target type + + Type of the target. + true if there's at least one row + + + + Check if there is any records in the db for the target type + + Type of the target. + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + true if there's at least one row + + + + Check if the exists in the database. + + Type of the target. + The id to check on + true if the ID exists; otherwise false. + + + + Check if any instance matches the criteria. + + true if an instance is found; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The target type. + The criteria expression + true if an instance is found; otherwise false. + + + + Saves the instance to the database + + The ActiveRecord instance to be deleted + + + + Saves the instance to the database and flushes the session. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The ActiveRecord instance to be saved + + + + Saves a copy of instance to the database + + The transient instance to be copied + The saved ActiveRecord instance + + + + Saves a copy of the instance to the database and flushes the session. If the primary key is unitialized + it creates the instance on the database. Otherwise it updates it. + + If the primary key is assigned, then you must invoke + or instead. + + + The transient instance to be copied + The saved ActiveRecord instance + + + + Creates (Saves) a new instance to the database. + + The ActiveRecord instance to be deleted + + + + Creates (Saves) a new instance to the database and flushes the session. + + The ActiveRecord instance to be created on the database + + + + Persists the modification on the instance + state to the database. + + The ActiveRecord instance to be deleted + + + + Persists the modification on the instance + state to the database and flushes the session. + + The ActiveRecord instance to be updated on the database + + + + Deletes the instance from the database. + + The ActiveRecord instance to be deleted + + + + Deletes the instance from the database and flushes the session. + + The ActiveRecord instance to be deleted + + + + Refresh the instance from the database. + + The ActiveRecord instance to be reloaded + + + + Testing hock only. + + + + + From NHibernate documentation: + Persist all reachable transient objects, reusing the current identifier + values. Note that this will not trigger the Interceptor of the Session. + + The instance. + The replication mode. + + + + Allow programmers to use the + ActiveRecord functionality without extending + + + + + Invokes the specified delegate passing a valid + NHibernate session. Used for custom NHibernate queries. + + The delegate instance + The ActiveRecord instance + Whatever is returned by the delegate invocation + + + + Finds an object instance by its primary key. + + ID value + true if you want an exception to be thrown + if the object is not found + if throwOnNotFound is set to + true and the row is not found + + + + Finds an object instance by its primary key. + + ID value + + + + Searches and returns the first row. + + The sort order - used to determine which record is the first one + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The criteria. + The sort order - used to determine which record is the first one. + A targetType instance or null. + + + + Searches and returns the first row. + + The criteria expression + A targetType instance or null + + + + Searches and returns the first row. + + The criterias. + A instance the targetType or null + + + + Searches and returns a row. If more than one is found, + throws + + The criteria + A targetType instance or null + + + + Returns all instances found for the specified type. + + + + + + Returns all instances found for the specified type + using sort orders and criterias. + + + + + + + + Returns all instances found for the specified type + using criterias. + + + + + + + Returns all instances found for the specified type according to the criteria + + + + + Returns a portion of the query results (sliced) + + + + + Returns a portion of the query results (sliced) + + + + + Returns a portion of the query results (sliced) + + + + + Deletes all entities of . + + + + + Deletes all entities of that match the HQL where clause. + + + + + Saves the instance to the database + + + + + + Saves a copy of the instance to the database + + + The saved instance + + + + Creates (Saves) a new instance to the database. + + + + + + Persists the modification on the instance + state to the database. + + + + + + Deletes the instance from the database. + + + + + + Refresh the instance from the database. + + The ActiveRecord instance to be reloaded + + + + Executes the query and return a strongly typed result + + The query. + + + + + Check if the exists in the database. + + The System.Type of the PrimaryKey + The id to check on + true if the ID exists; otherwise false. + + + + Returns the number of records of the specified + type in the database + + The count result + + + + Returns the number of records of the specified + type in the database that match the given critera + + The criteria expression + The count result + + + + Returns the number of records of the specified + type in the database + + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + The count result + + + + Returns the number of records of the specified + type in the database + + The criteria expression + The count result + + + + Check if there is any records in the db for the target type + + true if there's at least one row + + + + Check if there is any records in the db for the target type + + A sql where string i.e. Person=? and DOB > ? + Positional parameters for the filter string + true if there's at least one row + + + + Check if the exists in the database. + + The id to check on + true if the ID exists; otherwise false. + + + + Check if any instance matches the criteria. + + true if an instance is found; otherwise false. + + + + Check if any instance matching the criteria exists in the database. + + The criteria expression + true if an instance is found; otherwise false. + + + + Delegate for use in + + + + + + Delegate for use in + + + + + Performs the framework initialization. + + + This class is not thread safe. + + + + + This is saved so one can invoke RegisterTypes later + + + + + Initialize the mappings using the configuration and + the list of types + + + + + Initialize the mappings using the configuration and + checking all the types on the specified Assembly + + + + + Initialize the mappings using the configuration and + checking all the types on the specified Assemblies + + + + + Initializes the framework reading the configuration from + the AppDomain and checking all the types on the executing Assembly + + + + + Registers new assemblies in ActiveRecord + Usefull for dynamic assembly-adding after initialization + + + + + + Registers new types in ActiveRecord + Usefull for dynamic type-adding after initialization + + + + + + Generates and executes the creation scripts for the database. + + + + + Generates and executes the creation scripts for the database using + the specified baseClass to know which database it should create the schema for. + + + + + Executes the specified script to create/drop/change the database schema + + + + + Executes the specified script to create/drop/change the database schema + against the specified database connection + + + + + Generates and executes the Drop scripts for the database. + + + + + Generates and executes the Drop scripts for the database using + the specified baseClass to know which database it should create the scripts for. + + + + + Generates the drop scripts for the database saving them to the supplied file name. + + + If ActiveRecord was configured to access more than one database, a file is going + to be generate for each, based on the path and the fileName specified. + + + + + Generates the drop scripts for the database saving them to the supplied file name. + The baseType is used to identify which database should we act upon. + + + + + Generates the creation scripts for the database + + + If ActiveRecord was configured to access more than one database, a file is going + to be generate for each, based on the path and the fileName specified. + + + + + Generates the creation scripts for the database + The baseType is used to identify which database should we act upon. + + + + + Intended to be used only by test cases + + + + + Return true if the type has a [ActiveRecord] attribute + + + + + Retrieve all classes decorated with ActiveRecordAttribute or that have been configured + as a AR base class. + + Assembly to retrieve types from + Array to store retrieved types in + IConfigurationSource to inspect AR base declarations from + + + + Generate a file name based on the original file name specified, using the + count to give it some order. + + + + + + + + So others frameworks can intercept the + creation and act on the holder instance + + + + + Allows other frameworks to modify the ActiveRecordModel + before the generation of the NHibernate XML configuration. + As an example, this may be used to rewrite table names to + conform to an application-specific standard. Since the + configuration source is passed in, it is possible to + determine the underlying database type and make changes + if necessary. + + + + + Extends adding automatic validation support. + + + + using Castle.Components.Validator; + + public class Customer : ActiveRecordBase + { + ... + + [Property, ValidateNonEmpty] + public int Name + { + get { return _name; } + set { _name = value; } + } + + [Property, ValidateNonEmpty, ValidateEmail] + public int Email + { + get { return _email; } + set { _email = value; } + } + + + + + + Constructs an ActiveRecordValidationBase + + + + + Performs the fields validation. Returns true if no + validation error was found. + + + + + + Performs the fields validation for the specified action. + + Use validators appropriate to the action being performed. + True if no validation error was found + + + + Override the base hook to call validators required for create. + + The current state of the object + Returns true if the state has changed otherwise false + + + + Override the base hook to call validators required for update. + + object id + The previous state of the object + The current state of the object + Property types + Returns true if the state has changed otherwise false + + + + Throws an exception explaining why the save or update + cannot be executed when fields are not ok to pass. + + + You can override this method to declare a better behavior. + + + + + Returns a list of current validation errors messages. + + + + + Maps a specific PropertyInfo to a list of + error messages. Useful for frameworks. + + + + + Extends adding automatic validation support. + + + + + public class Customer : ActiveRecordBase + { + ... + + [Property, ValidateNotEmpty] + public int Name + { + get { return _name; } + set { _name = value; } + } + + [Property, ValidateNotEmpty, ValidateEmail] + public int Email + { + get { return _email; } + set { _email = value; } + } + + + + + + Constructs an ActiveRecordValidationBase + + + + + Performs the fields validation. Returns true if no + validation error was found. + + + + + + Performs the fields validation for the specified action. + + Use validators appropriate to the action being performed. + True if no validation error was found + + + + Override the base hook to call validators required for create. + + The current state of the object + Returns true if the state has changed otherwise false + + + + Override the base hook to call validators required for update. + + object id + The previous state of the object + The current state of the object + Property types + Returns true if the state has changed otherwise false + + + + Throws an exception explaining why the save or update + cannot be executed when fields are not ok to pass. + + + You can override this method to declare a better behavior. + + + + + Returns a list of current validation errors messages. + + + + + Maps a specific PropertyInfo to a list of + error messages. Useful for frameworks. + + + + + Used to execute a script file to create/update/drop + a database schema. Inspired on NHibernate SchemaExport class. + + + + + Initializes a new instance of the class. + + The config. + + + + Executes the specified script file. + + Name of the script file. + + + + Executes the script parts. + + The connection. + The parts. + + + + Opens the file and return an array of seperate commands that it contains + + Name of the script file. + + + + + Adds a collection of ICriterion to an ICriteria. + + The ICriteria that will be modified. + The collection of Criterion. + + + + Adds a collection of Order (sort by) specifiers to an ICriteria. + + The ICriteria that will be modified. + The collection of Order specifiers. + + + + Maps keys to position in the values array. + Basically key -> index + + + + + Initializes a new instance of the class. + + The names. + The values. + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + true if the contains an element with the key; otherwise, false. + + key is null. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + An element with the same key already exists in the object. + key is null. + The is read-only.-or- The has a fixed size. + + + + Removes all elements from the object. + + The object is read-only. + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + The object is read-only.-or- The has a fixed size. + key is null. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in array at which copying begins. + array is null. + index is less than zero. + array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. + The type of the source cannot be cast automatically to the type of the destination array. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets an object containing the keys of the object. + + + An object containing the keys of the object. + + + + Gets an object containing the values in the object. + + + An object containing the values in the object. + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + Gets or sets the with the specified key. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + Simple link list entry + + + + + Initializes a new instance of the class. + + The key. + The index. + + + + Finds the specified key. + + The key. + + + + + Translates the IInterceptor + messages to instance possible hooks + + + + + Initializes a new instance of the class. + + + + + Called just before an object is initialized + + + + + + + + The interceptor may change the state, which will be propagated to the persistent + object. Note that when this method is called, entity will be an empty + uninitialized instance of the class. + true if the user modified the state in any way + + + + Called when an object is detected to be dirty, during a flush. + + + + + + + + + The interceptor may modify the detected currentState, which will be propagated to + both the database and the persistent object. Note that all flushes end in an actual + synchronization with the database, in which as the new currentState will be propagated + to the object, but not necessarily (immediately) to the database. It is strongly recommended + that the interceptor not modify the previousState. + + true if the user modified the currentState in any way + + + + Called before an object is saved + + + + + + + + The interceptor may modify the state, which will be used for the SQL INSERT + and propagated to the persistent object + + true if the user modified the state in any way + + + + Called before an object is deleted + + + + + + + + It is not recommended that the interceptor modify the state. + + + + + Called before a flush + + The entities + + + + Called after a flush that actually ends in execution of the SQL statements required to + synchronize in-memory state with the database. + + The entitites + + + + Called when a transient entity is passed to SaveOrUpdate. + + + The return value determines if the object is saved + + true - the entity is passed to Save(), resulting in an INSERT + false - the entity is passed to Update(), resulting in an UPDATE + null - Hibernate uses the unsaved-value mapping to determine if the object is unsaved + + + A transient entity + + + + + Called from Flush(). The return value determines whether the entity is updated + + + + an array of property indicies - the entity is dirty + an empty array - the entity is not dirty + null - use Hibernate's default dirty-checking algorithm + + + A persistent entity + + + + + + An array of dirty property indicies or null to choose default behavior + + + + Instantiate the entity class. Return null to indicate that Hibernate should use the default + constructor of the class + + A mapped type + The identifier of the new instance + An instance of the class, or null to choose default behaviour + + + + Gets the sole instance. + + The instance. + + + + Create an interceptor for the session. + Allow to override the default for creating the intercetor + + + + + Create the + + + + + Creates an instance of the interceptor + + + + + Type of delegate that is called when a root type is registered. + + + + + + + Keeps an association of SessionFactories to a object model + tree; + + + + + Associates a Configuration object to a root type + + + + + + + Pendent + + + + + + Requests the Configuration associated to the type. + + + + + + + Obtains the SessionFactory associated to the type. + + + + + + + Creates a session for the associated type + + + + + + + Releases the specified session + + + + + + Called if an action on the session fails + + + + + + Gets the type of the root. + + The type. + + + + + This method allows direct registration + of a session factory to a type, bypassing the normal preperation that AR + usually does. + The main usage is in testing, so you would be able to switch the session factory + for each test. + Note that this will override the current session factory for the baseType. + + + + + Raised when a new root type is registered. + A new root type creates a new ISessionFactory + + + + + Gets or sets the implementation of + + + + + This exception is thrown when loading an entity by its PK failed because the entity did not exist. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + Default implementation of + + + This class is thread safe + + + + + Associates a Configuration object to a root type + + + + + + + Requests the Configuration associated to the type. + + + + + Pendent + + + + + Optimized with reader/writer lock. + + + + + + + This method allows direct registration + of a session factory to a type, bypassing the normal preperation that AR + usually does. + The main usage is in testing, so you would be able to switch the session factory + for each test. + Note that this will override the current session factory for the baseType. + + + + + Creates a session for the associated type + + + + + Gets the type of the root. + + The type. + + + + + Releases the specified session + + + + + + Called if an action on the session fails + + + + + + Raised when a root type is registered. + + + + + Gets or sets the implementation of + + + + + + HttpModule to set up a session for the request lifetime. + + + + To install the module, you must: + + + + + Add the module to the httpModules configuration section within system.web + + + + + + + + + The key used to store the session in the context items + + + + + Used to check whether the ThreadScopeInfo being used is suitable for a web environment + + + + + Initialize the module. + + The app. + + + + Disposes of the resources (other than memory) used by the module that implements . + + + + + Called when request is started, create a session for the request + + The sender. + The instance containing the event data. + + + + Called when the request ends, dipose of the scope + + The sender. + The instance containing the event data. + + + + Contains utility methods for dealing with ActiveRecord objects + and collections. + Useful for external frameworks. + + + + + Obsolete method, use ActiveRecordMediator or ActiveRecordMediator{T} instead + + + + + Obsolete method, use ActiveRecordMediator or ActiveRecordMediator{T} instead + + + + + Obsolete method, use ActiveRecordMediator or ActiveRecordMediator{T} instead + + + + + Create an array from an IList. + + Type of the item in the array. + The list. + + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + + If the HQL clause selects more than one field, or a join is performed + without using fetch join, the contents of the result list will + be of type object[]. Specify which index in this array should be used to + compose the new result array. Use -1 to ignore this parameter. + + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + Converts the results stored in an to an + strongly-typed array. + + + The class of the object which will be created for each row contained in + the supplied . + + The source list + If true, only distinct results will be inserted in the array + The strongly-typed array + A good alternative is to use the new + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + Converts the results stored in an to a + strongly-typed array. + + The source list + If true, only distinct results will be inserted in the array + The strongly-typed array + + The class of the object which will be created for each row contained in + the supplied . + + A good alternative is to use the new + + + + Converts the results stored in an to an + strongly-typed array. + + The type of the new array + The source list + + If the HQL clause selects more than one field, or a join is performed + without using fetch join, the contents of the result list will + be of type object[]. Specify which index in this array should be used to + compose the new result array. Use -1 to ignore this parameter. + + If true, only distinct results will be inserted in the array + The strongly-typed array + + + + This exception is thrown by TransactionScope. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.Binder.dll b/slips/build/lib/castle/bin/Castle.Components.Binder.dll new file mode 100644 index 0000000..b1e54e2 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Binder.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Binder.xml b/slips/build/lib/castle/bin/Castle.Components.Binder.xml new file mode 100644 index 0000000..1148ba8 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.Binder.xml @@ -0,0 +1,348 @@ + + + + Castle.Components.Binder + + + + + + + + + Defines the contract for a data binder implementation approach. + + + + + Create an instance of the specified type and binds the properties that + are available on the datasource. + + The target type. Can be an array + The obligatory prefix that distinguishes it on the datasource + A hierarchycal representation of flat data + an instance of the specified target type + + + + Create an instance of the specified type and binds the properties that + are available on the datasource respecting the white and black list + + The target type. Can be an array + The obligatory prefix that distinguishes it on the datasource + A list of comma separated values specifing the properties that should be ignored + A list of comma separated values specifing the properties that should not be ignored + A hierarchycal representation of flat data + an instance of the specified target type + + + + Binds the properties that are available on the datasource to the specified object instance. + + The target instance. + The obligatory prefix that distinguishes it on the datasource + A hierarchycal representation of flat data + an instance of the specified target type + + + + Binds the properties that + are available on the datasource respecting the white and black list + + The target type. + The obligatory prefix that distinguishes it on the datasource + A list of comma separated values specifing the properties that should be ignored + A list of comma separated values specifing the properties that should not be ignored + A hierarchycal representation of flat data + an instance of the specified target type + + + + Gets the validation error summary. + + The instance. + + + + Represents the databind errors + + + + + Exposes the implementation + if one was provided + + + + + Exposes the implementation + + + + + Gets or sets the validator runner instance. + + The validator instance. + + + + Invoked before the data binder implementation starts to + work on a class instance + + + + + Invoked after the data binder implementation starts to + work on a class instance + + + + Collect the databind errors + + + Holds a sorted array of properties names that should be ignored + + + Holds a sorted array of properties names that are on the white list + + + + Initializes a new instance of the class. + + + + + Gets the validation error summary. + + The instance. + + + + Sets the property value of the object we are binding. + Databinders that require different ways to access properties + can override this method. + + + + + + + + Implementations will bound the instance itself. + + + + + + + + + + + + + Invoked during object binding to allow + subclasses to have a chance of binding the types itself. + If the implementation returns true + the binder will invoke + + Type about to be bound + true if subclass wants to handle binding + + + + Represents the databind errors + + + + + Represents an error that occurred when trying to + databind a property of an instance. + + + + + Initializes a new instance of the class. + + The parent. + The property. + + + + Initializes a new instance of the class. + + The parent. + The property. + The exception. + + + + Initializes a new instance of the class. + + The parent. + The property. + The error message. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets the key. + + The key. + + + + Gets the parent. + + The parent. + + + + Gets the property. + + The property. + + + + Gets the error message. + + The error message. + + + + + + + + + + + + + + + + + + + + + + + + + Check the fields for duplicates. + + + + + I have to add this check as some stored procedures + return duplicate columns (doh!) and this isn't good + for the binder. + + + + + Depicts the contract for implementations able to convert an object + -- usually a string -- to the specified desired type. + + + + + Convert the input param into the desired type + + Type of the desired + The input + if false the return value must be ignored + + There are 3 possible cases when trying to convert: + 1) Input data for conversion missing (input is null or an empty String) + Returns default conversion value (based on desired type) and set conversionSucceeded = false + 2) Has input data but cannot convert to particular type + Throw exception and set conversionSucceeded = false + 3) Has input data and can convert to particular type + Return input converted to desired type and set conversionSucceeded = true + + + + + Fix for mod_mono issue where array values are passed as a comma seperated String. + + + + + + + + Support for types that specify a TypeConverter, + i.e.: NullableTypes + + + + + A useful representation of a set of IPropertyError instances. + + + + + Initializes a new instance of the class. + + The initial contents. + + + + Determines whether [contains] [the specified property]. + + The property. + + true if [contains] [the specified property]; otherwise, false. + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets the with the specified property. + + + + + + Provides a way to properties on the binder target + be bound to a different key in the data source. + + + + + Should return the key that gathers the value + to fill the property. + + + The type which is the target of the binder + + + The property name in the target type + + + A name of the source data that should be used to populate the property + + + + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.dll b/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.dll new file mode 100644 index 0000000..4ca7eb1 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.xml b/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.xml new file mode 100644 index 0000000..52a9a63 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.Common.EmailSender.xml @@ -0,0 +1,205 @@ + + + + Castle.Components.Common.EmailSender + + + + + Abstracts an approach to send e-mails + + + + + Sends a message. + + From field + To field + e-mail's subject + message's body + + + + Sends a message. + + Message instance + + + + Sends multiple messages. + + Array of messages + + + + Uses Smtp to send emails. + + + + + This service implementation + requires a host name in order to work + + The smtp server name + + + + Sends a message. + + If any of the parameters is null + From field + To field + e-mail's subject + message's body + + + + Sends a message. + + If the message is null + Message instance + + + + Converts a message from Castle.Components.Common.EmailSender.Message type + to System.Web.Mail.MailMessage + + The message to convert. + The converted message . + + + + Configures the message or the sender + with port information and eventual credential + informed + + Message instance + + + + Gets or sets the port used to + access the SMTP server + + + + + Gets the hostname. + + The hostname. + + + + Gets or sets a value which is used to + configure if emails are going to be sent asyncrhonously or not. + + + + + Gets or sets a value that specifies + the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the domain. + + The domain. + + + + Gets or sets the name of the user. + + The name of the user. + + + + Gets or sets the password. + + The password. + + + + Gets a value indicating whether credentials were informed. + + + if this instance has credentials; otherwise, . + + + + + Message formats + + + + + The body is composed of html content + + + + + The body is pure text + + + + + Message priority + + + + + Abstracts an e-mail message + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + From header. + To header. + The subject header. + The message body. + + + + Represents a file attachment + + + + + Creates a new attachment + + Look at System.Net.Mimie.MediaTypeNames for help. + Path to the file. + + + + Creates a new attachment + + Look at System.Net.Mime.MediaTypeNames for help. + File stream. + + + + Gets the name of the file. + + The name of the file. + + + + Gets the type of the media. + + The type of the media. + + + + Gets the stream. + + The stream. + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll new file mode 100644 index 0000000..1d603b1 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.xml b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.xml new file mode 100644 index 0000000..8b29317 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.xml @@ -0,0 +1,91 @@ + + + + Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine + + + + + Implementation of + that uses NVelocity + + + + + Constructs a NVelocityTemplateEngine instance + assuming the default values + + + + + Constructs a NVelocityTemplateEngine instance + specifing the template directory + + + + + + Gets or sets the assembly name. This + forces NVelocityTemplateEngine to use an assembly resource loader + instead of File resource loader (which is the default) + + + The property is obsolete, please use the AddResourceAssembly function. + + + + + Add an assembly to the resource collection. + + + + + + Starts/configure NVelocity based on the properties. + + + + + Returns true only if the + specified template exists and can be used + + + + + + + Process the template with data from the context. + + + + + Process the input template with data from the context. + + The context. + Name of the template. Used only for information during logging + The output. + The input template. + + + + + Process the input template with data from the context. + + The context. + Name of the template. Used only for information during logging + The output. + The input template. + + + + + Gets or sets the template directory + + + + + Enable/Disable caching. Default is true + + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.dll b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.dll new file mode 100644 index 0000000..7a022b0 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.xml b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.xml new file mode 100644 index 0000000..5fb5d0b --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.Common.TemplateEngine.xml @@ -0,0 +1,54 @@ + + + + Castle.Components.Common.TemplateEngine + + + + + Abstracts the underlying template engine being + used. + + + + + Implementors should process the template with + data from the context. + + + + + + + + + Implementors should process the input template with + data from the context. + + The context. + Name of the template. Used only for information during logging + The output. + The input template. + + + + + Implementors should process the input template with + data from the context. + + The context. + Name of the template. Used only for information during logging + The output. + The input template. + + + + + Implementors should return true only if the + specified template exists and can be used + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.dll b/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.dll new file mode 100644 index 0000000..5e9a8e8 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.xml b/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.xml new file mode 100644 index 0000000..c84e7ec --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.DictionaryAdapter.xml @@ -0,0 +1,62 @@ + + + + Castle.Components.DictionaryAdapter + + + + + Uses Reflection.Emit to expose the properties of a dictionary + through a dynamic implementation of a typed interface. + + + + + Defines the contract for building typed dictionary adapters. + + + + + Gets a typed adapter bound to the dictionary. + + The typed interface. + The underlying source of properties. + An implementation of the typed interface bound to the dictionary. + + The type represented by the T must be an interface with properties. + + + + + Gets a typed adapter bound to the dictionary. + + The typed interface. + The underlying source of properties. + An implementation of the typed interface bound to the dictionary. + + The type represented by T must be an interface with properties. + + + + + Assigns a prefix to the keyed properties of an interface. + + + + + Initializes a default instance of the class. + + + + + Initializes a new instance of the class. + + The prefix for the keyed properties of the interface. + + + + Gets the prefix key added to the properties of the interface. + + + + diff --git a/slips/build/lib/castle/bin/Castle.Components.Validator.dll b/slips/build/lib/castle/bin/Castle.Components.Validator.dll new file mode 100644 index 0000000..d82f823 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Validator.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Validator.pdb b/slips/build/lib/castle/bin/Castle.Components.Validator.pdb new file mode 100644 index 0000000..409db23 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Components.Validator.pdb differ diff --git a/slips/build/lib/castle/bin/Castle.Components.Validator.xml b/slips/build/lib/castle/bin/Castle.Components.Validator.xml new file mode 100644 index 0000000..ff95a5a --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Components.Validator.xml @@ -0,0 +1,2938 @@ + + + + Castle.Components.Validator + + + + + Properties decorated with this attribute will be validated to ensure that they represent a valid + credit card number. + for more details. + + + + + The base class for all the validation attributes. + This class define a property that is used to retrieve the validtor that is used to + validate the value of the property. + + + + + Constructs an implementation. + + + + + Builds this instance. + + The validator runner. + The type that this validator is built for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + Applies the common configuration defined on the attribute. + + The validator instance. + + + + Defines when to run the validation. + Defaults to RunWhen.Everytime + + + + + Gets or sets the validation execution order. + + The execution order. + + + + Gets or sets the a friendly name for the target property + + The name. + + + + Gets the error message. + + The error message. + + + + Initializes a new credit card validator. + + + + + Initializes a new credit card validator. + + + + + Initializes a new credit card validator. + + The card types to accept. + + + + Initializes a new credit card validator. + + The card types to accept. + The error message to be displayed if the validation fails. + + + + Initializes a new credit card validator. + + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + + + + Initializes a new credit card validator. + + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + The error message to be displayed if the validation fails. + + + + Initializes a new credit card validator. + + The card types to accept. + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + + + + Initializes a new credit card validator. + + The card types to accept. + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + The error message to be displayed if the validation fails. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validates that the collection is not empty + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this email address is a valid one. + + + This only check the format of the email, not if it really exists. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that at least one of the properties in the group is not null or empty (for strings) + + + + + Initializes a new instance of the class. + + The group. + + + + Initializes a new instance of the class. + + The group. + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this property has the required length (either exact or in a range) + + + + + Initializes a new exact length validator. + + The exact length required. + + + + Initializes a new exact length validator. + + The exact length required. + The error message to be displayed if the validation fails. + + + + Initializes a new range based length validator. + + The minimum length, or int.MinValue if this should not be tested. + The maximum length, or int.MaxValue if this should not be tested. + + + + Initializes a new range based length validator. + + The minimum length, or int.MinValue if this should not be tested. + The maximum length, or int.MaxValue if this should not be tested. + The error message to be displayed if the validation fails. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this property has the required length (either exact or in a range) + + + + + Initializes an integer-based range validator. + + The minimum value, or int.MinValue if this should not be tested. + The maximum value, or int.MaxValue if this should not be tested. + + + + Initializes an integer-based range validator. + + The minimum value, or int.MinValue if this should not be tested. + The maximum value, or int.MaxValue if this should not be tested. + The error message to be displayed if the validation fails. + + + + Initializes an decimal-based range validator. + + The minimum value, or decimal.MinValue if this should not be tested. + The maximum value, or decimal.MaxValue if this should not be tested. + + + + Initializes an decimal-based range validator. + + The minimum value, or decimal.MinValue if this should not be tested. + The maximum value, or decimal.MaxValue if this should not be tested. + The error message to be displayed if the validation fails. + + + + Initializes a string-based range validator. + + The minimum value, or String.Empty if this should not be tested. + The maximum value, or String.Empty if this should not be tested. + + + + Initializes a string-based range validator. + + The minimum value, or String.Empty if this should not be tested. + The maximum value, or String.Empty if this should not be tested. + The error message to be displayed if the validation fails. + + + + Initializes a DateTime-based range validator. + + The minimum value, or DateTime.MinValue if this should not be tested. + The maximum value, or DateTime.MaxValue if this should not be tested. + + + + Initializes a DateTime-based range validator. + + The minimum value, or DateTime.MinValue if this should not be tested. + The maximum value, or DateTime.MaxValue if this should not be tested. + The error message to be displayed if the validation fails. + + + + Initializes a range validator of a specified type. + + The data type to be used by the range validator. + The minimum value, or DateTime.MinValue if this should not be tested. + The maximum value, or DateTime.MaxValue if this should not be tested. + + + + Initializes a range validator of a specified type. + + The data type to be used by the range validator. + The minimum value, or DateTime.MinValue if this should not be tested. + The maximum value, or DateTime.MaxValue if this should not be tested. + The error message to be displayed if the validation fails. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validates that the content has not been set to the specified value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Type of the value. + The must not be this value. + + + + Initializes a new instance of the class. + + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that the property match the given regular expression + + + + + Initializes a new instance of the class. + + The pattern. + + + + Initializes a new instance of the class. + + The pattern. + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validates that the content has the same + value as the property informed. + + + + + Initializes a new instance of the class. + + The property to compare. + + + + Initializes a new instance of the class. + + The property to compare. + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validates that the content has a different + value from the property informed. + + + + + Initializes a new instance of the class. + + The property to compare. + + + + Initializes a new instance of the class. + + The property to compare. + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that the field has a value in a set of values. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message to be displayed if the validation fails. + + + + Initializes a new instance of the class. + + The set of values to compare against. + + + + Initializes a new instance of the class. + + The error message to be displayed if the validation fails. + The set of values to compare against. + + + + Initializes a new instance of the class. + + The of an enum class. + The enum names will be added to the contents of the set. + + + + Initializes a new instance of the class. + + The of an enum class. + The enum names will be added to the contents of the set. + The error message to be displayed if the validation fails. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validate that this date is a valid one. + + + This checks the format of the date + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Represents a validation report for an object instance + which is a snapshot since the last validation check. + + + + + Gets the errors for a property. + + The property name. + Array of error messages + + + + Registers the error message per . + + The property. + The message. + + + + Registers the error message per . + + The property. + The message. + + + + Gets the total of validation errors since the last validation check. + + That includes all errors for all properties. + + + The error count. + + + + Gets the total of properties that have failed validation checks. + + + + + Gets the invalid properties' name. + + The invalid properties. + + + + Gets the error messages. + + The error messages. + + + + Defines a html element type + + + + + Nothing specified + + + + + Text input element + + + + + Select element + + + + + Radio element + + + + + Checkbox element + + + + + Abstracts a validation registry per . + + + + + Gets all validators associated with a . + + The validators returned are initialized. + + + The validator runner. + Target type. + Restrict the set returned to the phase specified + A Validator array + + + + Gets all validators associated with a property. + + The validators returned are initialized. + + + The validator runner. + Target type. + The property. + Restrict the set returned to the phase specified + A Validator array + + + + Gets the string from resource by key + + The key. + + + + Abstracts a JS validation library implementation. + Each implementation should map the calls to their + own approach to enforce validation. + + + + + Set that a field should only accept digits. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept numbers. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field is required. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field value must match the specified regular expression. + + The target name (ie, a hint about the controller being validated) + The reg exp. + The violation message. + + + + Sets that a field value must be a valid email address. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + The violation message. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The violation message. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + The violation message. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Set that a field value must be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must _not_ be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must be a valid date. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Collection must not be empty. + + + + + Looks up a localized string similar to Please enter a valid date. + + + + + Looks up a localized string similar to Please enter a valid decimal in this field. + + + + + Looks up a localized string similar to Please enter a valid double in this field. + + + + + Looks up a localized string similar to Please enter a valid email address. For example fred@domain.com. + + + + + Looks up a localized string similar to Field must be {0} characters long. + + + + + Looks up a localized string similar to Field has an invalid content. + + + + + Looks up a localized string similar to At least one of the values in ({0}) should not be empty. + + + + + Looks up a localized string similar to , . + + + + + Looks up a localized string similar to Please enter a valid integer in this field. + + + + + Looks up a localized string similar to This is a required field. + + + + + Looks up a localized string similar to Field must be between {0} and {1} characters long. + + + + + Looks up a localized string similar to Field must be less than {0} characters long. + + + + + Looks up a localized string similar to Field must be more than {0} characters long. + + + + + Looks up a localized string similar to Field must not equals '{0}'. + + + + + Looks up a localized string similar to Field must be between {0} and {1}. + + + + + Looks up a localized string similar to Field must be less than or equal to {0}. + + + + + Looks up a localized string similar to Field must be between {0} and {1}. + + + + + Looks up a localized string similar to Field must be greater than or equal to {0}. + + + + + Looks up a localized string similar to Fields do not match. + + + + + Looks up a localized string similar to Field value is invalid (not a valid single). + + + + + Looks up a localized string similar to Field value is invalid (not a valid time). + + + + + Looks up a localized string similar to Field must be within a given set of values.. + + + + + Looks up a localized string similar to Field value does not appear to be a valid credit card number, or is of an unsupported type.. + + + + + implementation that + caches the reflection and custom attributes calls for better performance. + + + + + Initializes the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The resource manager. + + + + Gets all validators associated with a . + + The validators returned are initialized. + + + The validator runner. + Target type. + Restrict the set returned to the phase specified + A Validator array + + + + Gets all validators associated with a property. + + The validators returned are initialized. + + + The validator runner. + Target type. + The property. + Restrict the set returned to the phase specified + A Validator array + + + + Gets the string from resource by key + + The key. + + + + + This exception is raised when a validation error occurs + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + The error messages. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + The error messages. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The info parameter is a null reference (Nothing in Visual Basic). + + + + + Returns a list of current validation errors messages, if available. + + + + + Exception used when something goes wrong on + validation internal inner workings. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Coordinates the gathering and execution of validators. + + + + This class is not thread safe and should not be shared. It should only be + used in small scopes and discarded. + + + ValidatorRunner runner = new ValidatorRunner(new CachedValidationRegistry()); + + if (!runner.IsValid(customer)) + { + // do something as the Customer instance is not valid + } + + + + + Initializes a new instance of the class. + + The registry. + + + + Initializes a new instance of the class. + + If true, the runner will try to infer the validators based on data types + The registry. + + + + Determines whether the specified instance is valid. + + All validators are run. + + + The object instance to be validated (cannot be null). + + if the specified obj is valid; otherwise, . + + + + + Determines whether the specified instance is valid. + + All validators are run for the specified phase. + + + The object instance to be validated (cannot be null). + Restrict the set returned to the phase specified + + if the specified instance is valid; otherwise, . + + + + + Gets the registered validators. + + Type of the parent. + The property. + + + + + Gets the registered validators. + + Type of the parent. + The property. + The run when phase. + + + + + Gets the error list per instance. + + The instance. + + + + + Gets the error list per instance. + + The instance. + + + + + Gets the extended properties, which allows + implementation to store additional information to track state. + + The extended properties. + + + + Abstract implementation + + + + + Defines the basic contract for validators. + + To create a new validation you should use as it + implements most of the common methods and properties. + + + The validation should happen at IsValid, and if the validator can configure + a client-side validation script, it should use the + to indicate that it does support client-side validation and also implement the + to configure it. + + + + + + Implementors should perform any initialization logic + + The validation registry. + The target property + + + + Implementors should perform the actual validation upon + the property value + + + true if the field is OK + + + + Implementors should perform the actual validation upon + the property value + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + The target property + + + + + Defines when to run the validation. + Defaults to RunWhen.Everytime + + + + + Gets or sets the validation execution order. + + The execution order. + + + + The error message to be displayed if the validation fails + + The error message. + + + + Gets or sets the a friendly name for the target property + + The name. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Gets the property name. The + is returned if non-null, otherwise it will return the property name. + + + + + Implementors should perform any initialization logic + + + The target property + + + + Obtains the value of a property or field on a specific instance. + + The instance to inspect. + The name of the field or property to inspect. + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Implementors should perform the actual validation upon + the property value + + The target type instance + true if the field is OK + + + + Implementors should perform the actual validation upon + the property value + + The target type instance + The property/field value. It can be null. + true if the value is accepted (has passed the validation test) + + + + Builds the error message. + + + + + Gets the string from resource + + The key. + + + + + Gets or sets the validation execution order. + + The execution order. + + + + Defines when to run the validation. + Defaults to RunWhen.Everytime + + + + + The target property + + + + + The error message to be displayed if the validation fails + + + + + Gets or sets the a friendly name for the target property + + The name. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + Gets the property name. The + is returned if non-null, otherwise it will return the property name. + + + + + Validates that the content is a collection that is not empty + + + + + Implementors should perform the actual validation upon + the property value + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Validates that the content has a different + value from the value of the property informed. + + + + + Initializes a new instance of the class. + + The property to compare. + + + + Validates that the fieldValue has a different + value from the value of the property set through the constructor. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets the property to compare. + + The property to compare. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This validator validate that the is a valid credit card number in: + + Amex + DinersClub + Discover + Discover + enRoute + JCB + MasterCard + VISA + + It is possible to specify more than a single card type. + You can also specify exceptions for test cards. + + + + + Initializes a new credit card validator. + + + + + Initializes a new credit card validator. + + The card types to accept. + + + + Initializes a new credit card validator. + + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + + + + Initializes a new credit card validator. + + The card types to accept. + An array of card numbers to skip checking for (eg. gateway test numbers). Only digits should be provided for the exceptions. + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Validate that the propety value matches a valid (formatted) credit card + Note: null values are consider OK always. + + + + true if the field is OK + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Gets the allowed credit card types. + + The representing the allowed types. + + + + An array of card numbers to skip checking for (eg. gateway test numbers). + + A representing the card numbers to skip checking. + + + + Returns the key used to internationalize error messages + + + + + + Define the known card types + + + + + MasterCard Card + + + + + VISA Card + + + + + American Express Card + + + + + Diners Club Card + + + + + enRoute Card + + + + + Discover Card + + + + + JCB Card + + + + + Unkown card + + + + + All (known) cards + + + + + Ensures that at least one property in the group was filled with some value + + + + + Initializes a new instance of the class. + + Name of the group. + + + + Implementors should perform any initialization logic + + + The target property + + + + Implementors should perform the actual validation upon + the property value + + + true if the field is OK + + + + Implementors should perform the actual validation upon + the property value + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The name. + + + + The target property + + + + + Defines when to run the validation. + Defaults to RunWhen.Everytime + + + + + Gets or sets the validation execution order. + + The execution order. + + + + The error message to be displayed if the validation fails + + The error message. + + + + Gets or sets the a friendly name for the target property + + The name. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Gets the property name. The + is returned if non-null, otherwise it will return the property name. + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid DateTime. + Null or empty value are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Date (so no time part). + Null and Empty value are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Check if only date given (so no time part) + + The date to check + If Date only; otherwise, . + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Decimal. + Null or empty value are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Double. + Null or empty value are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Validate that this is a valid (formatted) email using regex + + + + + Validate a property using regular expression + + + + + Initializes a new instance of the class. + + The expression. + + + + Initializes a new instance of the class. + + The expression. + The regular expression options. + + + + Validate that the property value match the given regex. Null or empty values are allowed. + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets the regular expression object. + + The regular expression object. + + + + Gets the expression. + + The expression. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + From http://www.codeproject.com/aspnet/Valid_Email_Addresses.asp + + + + + Initializes a new instance of the class. + + + + + Applies the browser validation. + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether [supports browser validation]. + + + true if [supports browser validation]; otherwise, false. + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Integer. + Null or empty value are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Ensures that a property's string representation + is within the desired length limitations. + + + + + Initializes a new exact length validator. + + The exact length required. + + + + Initializes a new range based length validator. + + The minimum length, or int.MinValue if this should not be tested. + The maximum length, or int.MaxValue if this should not be tested. + + + + Validate that the property value matches the length requirements. + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Builds the error message. + + + + + + Gets or sets the exact length to validate. + + The exact length to validate. + + + + Gets or sets the minimun length to validate. + + The minimun length to validate. + + + + Gets or sets the maximum length to validate. + + The maximum length to validate. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Ensures that a property was + filled with some value + + + + + Check that this property has a value that is not null or empty (if string) + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Represents "phases" in which you can group + different validations and run then accordingly + + + + + Run all validations + + + + + Only during an insertion phase + + + + + Only during an update phase + + + + + Defines a custom phase + + + + + Validate that the property is not null or empty (for strings) + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message. + + + + Constructs and configures an + instance based on the properties set on the attribute instance. + + + + + + Validates that the content is not set to the specified value + + + + + Initializes a new instance of the class. + + + + + Validates that the fieldValue + is not set to the specified value + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Builds the error message. + + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid DateTime. + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Date (so no time part). + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Check if only date given (so no time part) + + The date to check + If Date only; otherwise, . + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Decimal. + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Double. + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Integer. + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + Checks if the fieldValue can be converted to a valid Single. + Null or empty value allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Specifies the data type the + is dealing with. + + + + + is dealing with a range of integers + + + + + is dealing with a range of decimals + + + + + is dealing with a range of dates + + + + + is dealing with a range of strings + + + + + Ensures that a property's string representation + is within the desired value limitations. + + + + + Initializes an integer-based range validator. + + The minimum value, or int.MinValue if this should not be tested. + The maximum value, or int.MaxValue if this should not be tested. + + + + Initializes an decimal-based range validator. + + The minimum value, or decimal.MinValue if this should not be tested. + The maximum value, or decimal.MaxValue if this should not be tested. + + + + Initializes a DateTime-based range validator. + + The minimum value, or DateTime.MinValue if this should not be tested. + The maximum value, or DateTime.MaxValue if this should not be tested. + + + + Initializes a string-based range validator. + + The minimum value, or String.Empty if this should not be tested. + The maximum value, or String.Empty if this should not be tested. + + + + Initializes a range validator of the given type with the given minimum and maximum values. + + The type of range validator. + The minimum value, or null if this should not be tested. + The maximum value, or null if this should not be tested. + + + + Internal method that checks a given maximum value's data type and converts + null values to the proper maximum value for the data type. + + The maximum value to be processed. + The maximum value with appropriate null-converted minimum values. + + + + Validate that the property value matches the value requirements. + + + + true if the field is OK + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Builds the error message. + + + + + + Gets the error message string for Integer validation + + an error message + + + + Gets the error message string for Decimal validation + + an error message + + + + Gets the error message string for DateTime validation + + an error message + + + + Gets the error message string for string validation + + an error message + + + + Internal method that checks a given minimum value's data type and converts + null values to the proper minimum value for the data type. + + The minimum value to be processed. + The minimum value with appropriate null-converted minimum values. + + + + Gets or sets the range validation type for this validator. If the type is changed, + the minimum and maximum values are reset to null-equivalent values (i.e. appropriate + minimum and maximum values for the data type). + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Validates that the content has the same + value as the property informed. + + + + + Initializes a new instance of the class. + + The property to compare. + + + + Validates that the fieldValue + is the same as the property set through the constructor. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets the property to compare. + + The property to compare. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Ensures that a property's string representation + is within a given set of values. + + + + + Initializes a set-based validator with an empty set. + + + + + Initializes a set-based validator. + + The set of values to validate against. + + + + Initializes a set-based validator. + + The of an enum class. + The enum names will be added to the contents of the set. + + + + Validate that the property value matches the set requirements. + + The target type instance + The property/field value. It can be null. + true if the value is accepted (has passed the validation test) + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Builds the error message. + + + + + + Gets or sets the set of values to validate against. + + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + This is a meta validator. + It is only useful to test a source content before setting it on the + target instance. + + + + + If the fieldValue is not null, an attempt to convert the + content to a Single is performed, and the field is considered value + if the conversion is successful. Null and empty are allowed. + + The target type instance + The property/field value. It can be null. + + true if the value is accepted (has passed the validation test) + + + + + Applies the browser validation by setting up one or + more input rules on . + + The config. + Type of the input. + The generator. + The attributes. + The target. + + + + Gets a value indicating whether this validator supports browser validation. + + + if browser validation is supported; otherwise, . + + + + + Returns the key used to internationalize error messages + + + + + + Represents the base of a browser configuration. + + + + + Configures the JS library based on the supplied parameters. + + The parameters. + + + + Implementors should return any tag/js content + to be rendered after the form tag is rendered. + + The form id. + + + + + Implementors should return any tag/js content + to be rendered after the form tag is closed. + + The form id. + + + + diff --git a/slips/build/lib/castle/bin/Castle.Core.dll b/slips/build/lib/castle/bin/Castle.Core.dll new file mode 100644 index 0000000..a10d597 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Core.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Core.xml b/slips/build/lib/castle/bin/Castle.Core.xml new file mode 100644 index 0000000..50d649b --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Core.xml @@ -0,0 +1,3049 @@ + + + + Castle.Core + + + + + This attribute is usefull only when you want to register all components + on an assembly as a batch process. + By doing so, the batch register will look + for this attribute to distinguish components from other classes. + + + + + Base for Attributes that want to express lifestyle + chosen by the component. + + + + + Initializes a new instance of the class. + + The type. + + + + Gets or sets the lifestyle. + + The lifestyle. + + + + Initializes a new instance of the class. + + The key. + + + + Initializes a new instance of the class. + + The key. + The service. + + + + Initializes a new instance of the class. + + The key. + The service. + The lifestyle. + + + + Gets the service. + + The service. + + + + Gets the key. + + The key. + + + + Associates a custom component with a component + + + + + Initializes a new instance of the class. + + Type of the component activator. + + + + Gets the type of the component activator. + + The type of the component activator. + + + + Specifies the proxying behavior for a component. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether the generated + interface proxy should inherit from . + + + + + Determines if the component requires a single interface proxy. + + true if the component requires a single interface proxy. + + + + Gets or sets the additional interfaces used during proxy generation. + + + + + Marks as property to be skipped and not be wired + by the IoC container + + + + + Used to declare that a component wants interceptors acting on it. + + + + + Constructs the InterceptorAttribute pointing to + a key to a interceptor + + + + + + Constructs the InterceptorAttribute pointing to + a service + + + + + + Indicates that the target components wants a + singleton lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + transient lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per thread lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per web request lifestyle. + + + + + Indicates that the target components wants a + pooled lifestyle. + + + + + Initializes a new instance of the class + using the default initial pool size (5) and the max pool size (15). + + + + + Initializes a new instance of the class. + + Initial size of the pool. + Max pool size. + + + + Gets the initial size of the pool. + + The initial size of the pool. + + + + Gets the maximum pool size. + + The size of the max pool. + + + + Indicates that the target components wants a + custom lifestyle. + + + + + Initializes a new instance of the class. + + The lifestyle handler. + + + + Gets the type of the lifestyle handler. + + The type of the lifestyle handler. + + + + New interface that is going to be used by DynamicProxy 2 + + + + + New interface that is going to be used by DynamicProxy 2 + + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + + + + + + + The generic arguments of the method, or null if not a generic method. + + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + + Interceptors might implement this to receive the + ComponentModel on behalf of the component where the + interceptor is acting. + + + + + Get the proxy target (note that null is a valid target!) + + + + + + Gets the interceptors for the proxy + + + + + + Abstract representation of a vertex. + + + + + The nodes that dependes on this node + + + + + The nodes that this node depends + + + + + The node has not been visited yet + + + + + This node is in the process of being visited + + + + + This now was visited + + + + + Represents a collection of objects + which are guaranted to be unique + and holds a color for them + + + + + Holds a timestamp (integer) + for a given item + + + + + Returns the node at the specified index. + + The lookup index. + The node at the specified index. + + If the specified is greater than the + number of objects within the list. + + + + + Validates the specified index. + + The lookup index. + + If the index is invalid. + + + + + Lifecycle interface. If implemented by a component, + the method Initialized will be invoked by the container + before making the component available to the external world. + + + + + Implementors should perform any initialization logic. + + + + + Only called for components that + belongs to a pool when the component + comes back to the pool. + + + + + Implementors should perform any + initialization/clean up. + + + + + Interface for components that wish to be started by the container + + + + + Starts this instance. + + + + + Stops this instance. + + + + + Provides a factory that can produce either or + classes. + + + + + Manages the instantiation of s. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + Summary description for ConsoleFactory. + + + + + NullLogFactory used when logging is turned off. + + + + + Creates an instance of ILogger with the specified name. + + Name. + + + + + Creates an instance of ILogger with the specified name and LoggerLevel. + + Name. + Level. + + + + + Creates outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + + + + + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + + + + + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + + + + + Manages logging. + + + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + + The Subname of this logger. + The New ILogger instance. + If the name has an empty element name. + + + + Determines if messages of priority "debug" will be logged. + + True if "debug" messages will be logged. + + + + Determines if messages of priority "info" will be logged. + + True if "info" messages will be logged. + + + + Determines if messages of priority "warn" will be logged. + + True if "warn" messages will be logged. + + + + Determines if messages of priority "error" will be logged. + + True if "error" messages will be logged. + + + + Determines if messages of priority "fatal" will be logged. + + True if "fatal" messages will be logged. + + + + Determines if messages of priority "fatalError" will be logged. + + True if "fatalError" messages will be logged. + + + + Creates a new LevelFilteredLogger. + + + + + Keep the instance alive in a remoting scenario + + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Message format + Array of objects to write using format + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Message format + Array of objects to write using format + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Message format + Array of objects to write using format + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Message format + Array of objects to write using format + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Message format + Array of objects to write using format + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Implementors output the log content by implementing this method only. + Note that exception can be null + + + + + + + + + The LoggerLevel that this logger + will be using. Defaults to LoggerLevel.Off + + + + + The name that this logger will be using. + Defaults to String.Empty + + + + + Determines if messages of priority "debug" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "info" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "warn" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "error" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + true if log level flags include the bit + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug and the Name + set to String.Empty. + + + + + Creates a new ConsoleLogger with the Name + set to String.Empty. + + The logs Level. + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug. + + The logs Name. + + + + Creates a new ConsoleLogger. + + The logs Name. + The logs Level. + + + + A Common method to log. + + The level of logging + The name of the logger + The Message + The Exception + + + + Returns a new ConsoleLogger with the name + added after this loggers name, with a dot in between. + + The added hierarchical name. + A new ConsoleLogger. + + + + The Logger using standart Diagnostics namespace. + + + + + Creates a logger based on . + + + + + + Creates a logger based on . + + + + + + + Creates a logger based on . + + + + + + + + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + + + + + Provides an interface that supports and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + + + + + Exposes the Global Context of the extended logger. + + + + + Exposes the Thread Context of the extended logger. + + + + + Exposes the Thread Stack of the extended logger. + + + + + Creates a new NullLogger. + + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + Returns this NullLogger. + + Ignored + This ILogger instance. + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + Returns empty context properties. + + + + + Returns empty context properties. + + + + + Returns empty context stacks. + + + + + Interface for Context Properties implementations + + + + This interface defines a basic property get set accessor. + + + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a MemoryStream for testing your components. + + + This logger is not thread safe. + + + + + Creates a new StreamLogger with default encoding + and buffer size. Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + + + Creates a new StreamLogger with default buffer size. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + + + + Creates a new StreamLogger. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + + The buffer size that will be used for this stream. + + + + + + Creates a new StreamLogger with + Debug as default Level. + + The name of the log. + The StreamWriter the log will write to. + + + + The WebLogger sends everything to the HttpContext.Trace + + + Trace must be enabled on the Asp.Net configuration file (web.config or machine.config) + + + + + Creates a new WebLogger with the priority set to DEBUG. + + + + + Creates a new WebLogger. + + The Log level typecode. + + + + Creates a new WebLogger. + + The Log name. + + + + Creates a new WebLogger. + + The Log name. + The Log level typecode. + + + + A Common method to log. + + The level of logging + The Log name. + The Message + The Exception + + + + Just returns this logger (WebLogger is not hierarchical). + + Ignored + This ILogger instance. + + + + Supporting Logger levels. + + + + + Logging will be off + + + + + Fatal logging level + + + + + Error logging level + + + + + Warn logging level + + + + + Info logging level + + + + + Debug logging level + + + + + This is an abstract implementation + that deals with methods that can be abstracted away + from underlying implementations. + + + AbstractConfiguration makes easier to implementers + to create a new version of + + + + + Summary description for IConfiguration. + + + is a interface encapsulating a configuration node + used to retrieve configuration values. + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the node. + + + The Name of the node. + + + + + Gets the value of the node. + + + The Value of the node. + + + + + Gets an of + elements containing all node children. + + The Collection of child nodes. + + + + Gets an of the configuration attributes. + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the . + + + The Name of the . + + + + + Gets the value of . + + + The Value of the . + + + + + Gets all child nodes. + + The of child nodes. + + + + Gets node attributes. + + + All attributes of the node. + + + + + A collection of objects. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Adds an . + + The to add. + + The index at which the new element was inserted. + + + + + Adds an array of . + + The Array of to add. + + + + Adds a . + + The to add. + + + + Copies the elements to a one-dimensional instance at the specified index. + + + The one-dimensional must have zero-based indexing. + + The zero-based index in array at which copying begins. + + + + Gets a value indicating whether the contains + in the collection. + + The to locate. + + if the is contained in the collection; + otherwise, . + + + + + Removes a specific from the + collection. + + The to remove from the collection. + + is not found in the collection. + + + + + Represents the entry at the specified index of the . + + + The zero-based index of the entry to locate in the collection. + + + The entry at the specified index of the collection. + + + is outside the valid range of indexes for the collection. + + + + + Summary description for MutableConfiguration. + + + + + Initializes a new instance of the class. + + The name. + + + + Enumeration used to mark the component's lifestyle. + + + + + No lifestyle specified. + + + + + Singleton components are instantiated once, and shared + between all clients. + + + + + Thread components have a unique instance per thread. + + + + + Transient components are created on demand. + + + + + Optimization of transient components that keeps + instance in a pool instead of always creating them. + + + + + Any other logic to create/release components. + + + + + PerWebRequest components are created once per Http Request + + + + + + + + + + Represents the collection of information and + meta information collected about a component. + + + + Name (key) of the component + + + Service exposed + + + Implementation for the service + + + Extended properties + + + Lifestyle for the component + + + Custom lifestyle, if any + + + Custom activator, if any + + + Dependencies the kernel must resolve + + + All available constructors + + + All potential properties that can be setted by the kernel + + + Steps of lifecycle + + + External parameters + + + Configuration node associated + + + Interceptors associated + + + + Constructs a ComponentModel + + + + + Sets or returns the component key + + + + + Gets or sets the service exposed. + + The service. + + + + Gets or sets the component implementation. + + The implementation. + + + + Gets or sets a value indicating whether the component requires generic arguments. + + + true if generic arguments are required; otherwise, false. + + + + + Gets or sets the extended properties. + + The extended properties. + + + + Gets the constructors candidates. + + The constructors. + + + + Gets the properties set. + + The properties. + + + + Gets or sets the configuration. + + The configuration. + + + + Gets the lifecycle steps. + + The lifecycle steps. + + + + Gets or sets the lifestyle type. + + The type of the lifestyle. + + + + Gets or sets the strategy for + inspecting public properties + on the components + + + + + Gets or sets the custom lifestyle. + + The custom lifestyle. + + + + Gets or sets the custom component activator. + + The custom component activator. + + + + Gets the interceptors. + + The interceptors. + + + + Gets the parameter collection. + + The parameters. + + + + Dependencies are kept within constructors and + properties. Others dependencies must be + registered here, so the kernel (as a matter + of fact the handler) can check them + + + + + Represents a constructor of the component + that the container can use to initialize it properly. + + + + + Initializes a new instance of the class. + + The constructor info. + The dependencies. + + + + Gets the ConstructorInfo (from reflection). + + The constructor. + + + + Gets the dependencies this constructor candidate exposes. + + The dependencies. + + + + Collection of + + + + + Adds the specified candidate. + + The candidate. + + + + Clears this instance. + + + + + Gets the fewer arguments candidate. + + The fewer arguments candidate. + + + + Represents a dependency (other component or a + fixed value available through external configuration). + + + + + Initializes a new instance of the class. + + The type. + The dependency key. + Type of the target. + if set to true [is optional]. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Serves as a hash function for a particular type, suitable + for use in hashing algorithms and data structures like a hash table. + + + A hash code for the current . + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + if the specified is equal to the + current ; otherwise, . + + + + + Gets or sets the type of the dependency. + + The type of the dependency. + + + + Gets or sets the dependency key. + + The dependency key. + + + + Gets the type of the target. + + The type of the target. + + + + Gets or sets whether this dependency is optional. + + + true if this dependency is optional; otherwise, false. + + + + + Collection of . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The dependencies. + + + + Initializes a new instance of the class. + + The dependencies. + + + + Adds the specified model. + + The model. + + + + Removes the specified model. + + The model. + + + + Clears this instance. + + + + + Determines whether this collection contains the the specified model. + + The model. + + true if the collection contains the specified model; otherwise, false. + + + + + Represents an reference to a Interceptor component. + + + + + Initializes a new instance of the class. + + The component key. + + + + Initializes a new instance of the class. + + Type of the service. + + + + Gets the type of the service. + + The type of the service. + + + + Gets the interceptor component key. + + The component key. + + + + Gets the type of the reference. + + The type of the reference. + + + + Collection of + + + + + Adds the specified interceptor. + + The interceptor. + + + + Adds the the specified interceptor as the first. + + The interceptor. + + + + Adds the the specified interceptor as the last. + + The interceptor. + + + + Inserts the specified interceptor at the specified index. + + The index. + The interceptor. + + + + When implemented by a class, copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets a value indicating whether this instance has interceptors. + + + true if this instance has interceptors; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + Represents a collection of ordered lifecycle steps. + + + + + Initializes a new instance of the class. + + + + + Returns all steps for the commission phase + + + + + + Returns all steps for the decommission phase + + + + + + Adds a step to the commission or decomission phases. + + + + + + + Copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets a value indicating whether this instance has commission steps. + + + true if this instance has commission steps; otherwise, false. + + + + + Gets a value indicating whether this instance has decommission steps. + + + true if this instance has decommission steps; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + Represents meta information associated with a method + (not yet defined) + + + + + Initializes a new instance of the class. + + The config node. + + + + Gets the config node. + + The config node. + + + + Collection of + + + + + Adds the specified model. + + The model. + + + + Gets the method info2 model. + + The method info2 model. + + + + Represents a parameter. Usually the parameter + comes from the external world, ie, an external configuration. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Gets the name. + + The name. + + + + Gets the value. + + The value. + + + + Gets the config value. + + The config value. + + + + Collection of + + + + + Initializes a new instance of the class. + + + + + Adds the specified name. + + The name. + The value. + + + + Adds the specified name. + + The name. + The config node. + + + + Determines whether this collection contains the specified key. + + The key. + + true if yes; otherwise, false. + + + + + Adds the specified key. + + + Not implemented + + The key. + The value. + + + + Clears this instance. + + + Not implemented + + + + + Removes the specified key. + + The key. + + Not implemented + + + + + Copy the content to the specified array + + target array + target index + + Not implemented + + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets the keys. + + The keys. + + Not implemented + + + + + Gets the values. + + The values. + + Not implemented + + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets a value indicating whether this instance is fixed size. + + + true if this instance is fixed size; otherwise, false. + + + + + Gets the with the specified key. + + + + + + Gets the count. + + The count. + + + + Gets the sync root. + + The sync root. + + + + Gets a value indicating whether this instance is synchronized. + + + true if this instance is synchronized; otherwise, false. + + + + + Represents a property and the respective dependency. + + + + + Initializes a new instance of the class. + + The property info. + The dependency. + + + + Gets the property. + + The property. + + + + Gets the dependency. + + The dependency. + + + + Collection of + + + + + Adds the specified property. + + The property. + + + + Clears this instance. + + + + + Finds a PropertySet the by PropertyInfo. + + The info. + + + + + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + + Returns an instance of + created according to the relativePath + using itself as the root. + + + + + + + + + + Only valid for resources that + can be obtained through relative paths + + + + + + + + + + Do not allow closing and disposal of the + underlying . + + + + + + + + + + Depicts the contract for resource factories. + + + + + Used to check whether the resource factory + is able to deal with the given resource + identifier. + + + Implementors should return true + only if the given identificator is supported + by the resource factory + + + + + + + Creates an instance + for the given resource identifier + + + + + + + Creates an instance + for the given resource identifier + + + + + + + + + + + + + + + + + + Adapts a static string content as an + + + + + Enable access to files on network shares + + + + + Defines that the implementation wants a + in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + + + Used by Castle Project components to, for example, + gather logging factories + + + + + Increments IServiceProvider with a generic service resolution operation. + + + + + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + + + + + + General purpose class to represent a standard pair of values. + + Type of the first value + Type of the second value + + + + Constructs a pair with its values + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.DynamicProxy.dll b/slips/build/lib/castle/bin/Castle.DynamicProxy.dll new file mode 100644 index 0000000..4e42091 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.DynamicProxy.dll differ diff --git a/slips/build/lib/castle/bin/Castle.DynamicProxy.xml b/slips/build/lib/castle/bin/Castle.DynamicProxy.xml new file mode 100644 index 0000000..16b634e --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.DynamicProxy.xml @@ -0,0 +1,693 @@ + + + + Castle.DynamicProxy + + + + + Summary description for ReferenceExpression. + + + + + Summary description for Expression. + + + + + Summary description for IEmitter. + + + + + Summary description for ArgumentReference. + + + + + Summary description for TypeReference. + + + + + Summary description for Reference. + + + + + Summary description for AssignArrayStatement. + + + + + Summary description for Statement. + + + + + Summary description for AssignStatement. + + + + + Summary description for BinaryExpression. + + + + + Summary description for ConditionExpression. + + + + + Summary description for ConstructorInvocationExpression. + + + + + Summary description for ConvertExpression. + + + + + Summary description for ExpressionStatement. + + + + + Summary description for FieldReference. + + + + + Summary description for FixedReference. + + + + + Summary description for GotoStatement. + + + + + Wraps a reference that is passed ByRef and provides indirect load/store facilities. + + + + + Summary description for LabelReference. + + + + + Summary description for LoadRefArrayElementExpression. + + + + + Summary description for LocalReference. + + + + + Summary description for LockBlockExpression. + + + + + Summary description for MarkBranchStatement. + + + + + Summary description for MethodInvocationExpression. + + + + + Summary description for MethodPointerExpression. + + + + + Summary description for MethodTokenExpression. + + + + + Summary description for NewArrayExpression. + + + + + Summary description for NewInstanceExpression. + + + + + Summary description for NopStatement. + + + + + Summary description for NullExpression. + + + + + Summary description for PopValueFromStackStatement. + + + + + Summary description for ReferenceExpression. + + + + + Summary description for ReferencesToObjectArrayExpression. + + + + + Summary description for ReturnReferenceExpression. + + + + + Summary description for ReturnStatement. + + + + + Summary description for SelfReference. + + + + + Summary description for TypeTokenExpression. + + + + + Summary description for VirtualMethodInvocationExpression. + + + + + Summary description for ArgumentsUtil. + + + + + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + + + + + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + + + + + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + + + + + Summary description for OpCodeUtil. + + + + + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + + + + + + + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + + + + + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + + + + + + + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + + + + + + + Summary description for AbstractCodeBuilder. + + + + + Summary description for AbstractEasyType. + + + + + Summary description for ConstructorCodeBuilder. + + + + + Summary description for ConstructorCollection. + + + + + Summary description for EasyCallable. + + + + + Summary description for EasyNested. + + + + + Summary description for EasyConstructor. + + + + + Summary description for IEasyBuilder. + + + + + Summary description for EasyDefaultConstructor. + + + + + Summary description for EasyEvent. + + + + + Summary description for EasyMethod. + + + + + Summary description for EasyProperty. + + + + + Summary description for EasyRuntimeConstructor. + + + + + Summary description for EasyRuntimeMethod. + + + + + Summary description for EasyType. + + + + + Summary description for EventsCollection. + + + + + Summary description for MethodCodeBuilder. + + + + + Summary description for MethodCollection. + + + + + Summary description for NestedTypeCollection. + + + + + Summary description for PropertiesCollection. + + + + + Summary description for Set. + + + + + Summary description for BaseCodeGenerator. + + + + + Holds instance fields which points to delegates instantiated + + + + + MethodInfo => Callable delegate + + + + + Generates one public constructor receiving + the instance and instantiating a hashtable + + + Should be overrided to provided specific semantics, if necessary + + + + + Common initializatio code for the default constructor + + + + + + + + + + + + + + + Iterates over the interfaces and generate implementation + for each method in it. + + Type class + if true, we inspect the + type for implemented interfaces + + + + Naive implementation, but valid for long namespaces + Works by using only the last piece of the namespace + + + + + Gets the name of a type, taking into consideration nested types. + + + + + Generate property implementation + + + + + + Generates implementation for each method. + + + + + + + Writes the method implementation. This + method generates the IL code for property get/set method and + ordinary methods. + + The method to implement. + being constructed. + + + + + + + + + Summary description for ClassProxyGenerator. + + + + + Generates one public constructor receiving + the instance and instantiating a hashtable + + + + + Summary description for InterfaceProxyGenerator. + + + + + From an interface method (abstract) look up + for a matching method on the target + + + + + + + Generates one public constructor receiving + the instance and instantiating a HybridCollection + + + + + Summary description for ModuleScope. + + + + + Avoid leaks caused by non disposal of generated types. + + + + + Keep track of generated types + + + + + Used to lock the module builder creation + + + + + Summary description for ProxyGenerationException. + + + + + Summary description for DefaultProxyBuilder. + + + + + Summary description for IProxyBuilder. + + + + + Summary description for GeneratorContext. + + + + + Checks if the method has the same signature as a method that was marked as + one that should generate a new vtable slot. + + + + + The implementor of IObjectReference responsible for + the deserialization and reconstruction of the proxy object + + + + + Proceed with, manipulate or find more information about the call that + is being intercepted + + + + + Proceed with the call that was intercepted. + + The arguments that will be passed onto the method. + The argument returned from the method. + + + + Get the dynamic proxy that intercepted this call. + + + + + Get or set target that will be invoked when Process() is called. + + + Changing InvocationTarget only effects this call. Any call made after + this will invoke the original target of the proxy. + + + + + Get the method that is being invoked. + + + + + Get the method on the target object that is being invoked. + + + + + + + + + + Handles the deserialization of proxies. + + + + + Usefull for test cases + + + + + Summary description for AssertUtil. + + + + + + + + + + + + + + + + + + + + + + + + + + + A Generic Interface for Proxies which provides + access to the underlying interceptor + + + + + Generates a Java style proxy. This overrides the .Net proxy requirements + that forces one to extend MarshalByRefObject or (for a different purpose) + ContextBoundObject to have a Proxiable class. + + + The should be used to generate a class + implementing the specified interfaces. The dynamic implementation will + only calls the internal instance. + + + Please note that this proxy implementation currently doesn't not supports ref and out arguments + in methods. + Also note that only virtual methods can be proxied in a class. + + + + MyInvocationHandler interceptor = ... + ProxyGenerator generator = new ProxyGenerator(); + IInterfaceExposed proxy = + generator.CreateProxy( new Type[] { typeof(IInterfaceExposed) }, interceptor ); + + + + + + Generates a proxy implementing all the specified interfaces and + redirecting method invocations to the specifed interceptor. + + Interface to be implemented + instance of + The proxy target. + Proxy instance + + + + Generates a proxy implementing all the specified interfaces and + redirecting method invocations to the specifed interceptor. + + Array of interfaces to be implemented + instance of + The proxy target. + Proxy instance + + + + + + + + + The proxy target. + + + + + + + + + + The proxy target. + + + + + Summary description for StandardInterceptor. + + + + + + + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.DynamicProxy2.dll b/slips/build/lib/castle/bin/Castle.DynamicProxy2.dll new file mode 100644 index 0000000..4461908 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.DynamicProxy2.dll differ diff --git a/slips/build/lib/castle/bin/Castle.DynamicProxy2.xml b/slips/build/lib/castle/bin/Castle.DynamicProxy2.xml new file mode 100644 index 0000000..dbaa6bc --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.DynamicProxy2.xml @@ -0,0 +1,635 @@ + + + + Castle.DynamicProxy2 + + + + + Wraps a reference that is passed + ByRef and provides indirect load/store support. + + + + + Summary description for NewArrayExpression. + + + + + + + + + + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + + + + + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + + + + + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + + + + + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + + + + + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + + + + + Inspect the base method for generic definitions + and set the return type and the parameters + accordingly + + + + + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + + + + + + + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + + + + + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + + + + + + + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + + + + + + + Summary description for PropertiesCollection. + + + + + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + + + + + Base class that exposes the common functionalities + to proxy generation. + + + TODO: + - Use the interceptor selector if provided + - Add tests and fixes for 'leaking this' problem + - Mixin support + + + + + Used by dinamically implement + + + + + + Generates a parameters constructor that initializes the proxy + state with just to make it non-null. + + This constructor is important to allow proxies to be XML serializable + + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + If true the invocation will implement the IChangeProxyTarget interface + + + + + Generates the constructor for the nested class that extends + + + + + + + + + + Improvement: this cache should be static. We should generate a + type constructor instead + + + + + Performs some basic screening and invokes the + to select methods. + + + + + + + + Checks if the method is public or protected. + + + + + + + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + + + + + Checks if the method has the same signature as a method that was marked as + one that should generate a new vtable slot. + + + + + Initializes a new instance of the class. + + Type of the target. + The interfaces. + The options. + + + + + + + + + Initializes a new instance of the class. + + The emitter. + The add method. + The remove method. + The attributes. + + + + + + + + + Finds the type of the method on target. + + The method on interface. + Type of the proxy target. + + + + + Checks whether the given types are the same. This is + more complicated than it looks. + + + + + + + + This is used by the ProxyObjectReference class durin de-serialiation, to know + which generator it should use + + + + + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + + + + + Handles the deserialization of proxies. + + + + + Usefull for test cases + + + + + Used during the target type inspection process. + Implementors have a chance to interfere in the + proxy generation process + + + + + Invoked by the generation process to know if + the specified member should be proxied + + + + + + + + Invoked by the generation process to notify that a + member wasn't marked as virtual. + + + + + + + Invoked by the generation process to notify + that the whole process is completed. + + + + + Abstracts the implementation of proxy constructions + + + + + Implementors should return a proxy for the specified type. + + The proxy base class. + The proxy generation options. + The generated proxy type. + + + + Implementors should return a proxy for the specified + type and interfaces. The interfaces must be only "mark" interfaces + + + + + + + + + Implementors should return a proxy for the specified + interface that 'proceeds' executions to the + specified target. + + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s). + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s) and uses an instance of the interface + as their targets, rather than a class. All IInvocation's + should then implement IChangeProxyTarget. + + + + + + + + Gets the module scope used by this builder for generating code. + + The module scope used by this builder. + + + + Determines whether this assembly has internals visisble to dynamic proxy. + + The asm. + + + + Determines whether the specified method is internal. + + The method. + + true if the specified method is internal; otherwise, false. + + + + + Summary description for ModuleScope. + + + + + The default file name used when the assembly is saved using . + + + + + The default assembly (simple) name used for the assemblies generated by a instance. + + + + + Initializes a new instance of the class; assemblies created by this instance will not be saved. + + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved. + + If set to true saves the generated module. + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + + If set to true saves the generated module. + The simple name of the strong-named assembly generated by this . + The path and file name of the manifest module of the strong-named assembly generated by this . + The simple name of the weak-named assembly generated by this . + The path and file name of the manifest module of the weak-named assembly generated by this . + + + + Returns a type from this scope's type cache, or null if the key cannot be found. + + The key to be looked up in the cache. + The type from this scope's type cache matching the key, or null if the key cannot be found + + + + Registers a type in this scope's type cache. + + The key to be associated with the type. + The type to be stored in the cache. + + + + Gets the key pair used to sign the strong-named assembly generated by this . + + + + + + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + + If set to true, a strong-named module is returned; otherwise, a weak-named module is returned. + A strong-named or weak-named module generated by this scope, as specified by the parameter. + + + + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + + A strong-named module generated by this scope. + + + + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + + A weak-named module generated by this scope. + + + + Saves the generated assembly with the name and directory information given when this instance was created (or with + the and current directory if none was given). + + + + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the overload. + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + Both a strong-named and a weak-named assembly have been generated or no assembly has been + generated. + + + + Saves the specified generated assembly with the name and directory information given when this instance was created + (or with the and current directory if none was given). + + True if the generated assembly with a strong name should be saved (see ); + false if the generated assembly without a strong name should be saved (see . + + + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + + No assembly has been generated that matches the parameter. + + + + + Users of this should use this lock when accessing the cache. + + + + + Gets the strong-named module generated by this scope, or if none has yet been generated. + + The strong-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the strongly named module generated by this scope. + + The file name of the strongly named module generated by this scope. + + + + Gets the directory where the strongly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the strongly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + Gets the weak-named module generated by this scope, or if none has yet been generated. + + The weak-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the weakly named module generated by this scope. + + The file name of the weakly named module generated by this scope. + + + + Gets the directory where the weakly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the weakly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + ProxyBuilder that persists the generated type. + + + The saved assembly contains just the last generated type. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The hook. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The builder. + + + + Initializes a new instance of the class. + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The interceptors. + + + + + Creates the class proxy. + + Type of the target. + The interceptors. + The constructor args. + + + + + + + + + + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The options. + The constructor args. + The interceptors. + + + + + Gets the proxy builder instance. + + The proxy builder. + + + + + + + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.dll b/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.dll new file mode 100644 index 0000000..6d03c33 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.xml b/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.xml new file mode 100644 index 0000000..48a1fbb --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.ActiveRecordIntegration.xml @@ -0,0 +1,38 @@ + + + + Castle.Facilities.ActiveRecordIntegration + + + + + Provides integration with ActiveRecord framework. + + + + + This class implements + and delegates and + to + as the session is in fact managed by ActiveRecord framework + + + + + Implements allowing + it to be used by the container as an ordinary component. + However only + is implemented + + + + Needed for NHibernate 1.2 from trunk + + + + Initializes a new instance of the class. + + The transaction mode. + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.dll b/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.dll new file mode 100644 index 0000000..acd60d1 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.xml b/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.xml new file mode 100644 index 0000000..b53e58c --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.AutomaticTransactionManagement.xml @@ -0,0 +1,131 @@ + + + + Castle.Facilities.AutomaticTransactionManagement + + + + + Tries to obtain transaction configuration based on + the component configuration or (if not available) check + for the attributes. + + + + + Tries to obtain transaction configuration based on + the component configuration or (if not available) check + for the attributes. + + The kernel. + The model. + + + + Tries to configure the ComponentModel based on attributes. + + The model. + + + + Obtains the name of the + node (overrides MethodMetaInspector.ObtainNodeName) + + the node name on the configuration + + + + Processes the meta information available on + the component configuration. (overrides MethodMetaInspector.ProcessMeta) + + The model. + The methods. + The meta model. + + + + Validates the type is OK to generate a proxy. + + The model. + The store. + + + + Determines whether the configuration has istransaction="true" attribute. + + The configuration. + + true if yes; otherwise, false. + + + + + Asserts that if there are transaction behavior + configured for methods, the component node has istransaction="true" attribute + + The model. + + + + Associates the transaction interceptor with the ComponentModel. + + The model. + The meta information store. + + + + Augments the kernel to handle transactional components + + + + + Registers the interceptor component, the metainfo store and + adds a contributor to the ModelBuilder + + + + + Intercepts call for transactional components, coordinating + the transaction creation, commit/rollback accordingly to the + method execution. Rollback is invoked if an exception is threw. + + + + + Initializes a new instance of the class. + + The kernel. + The info store. + + + + Sets the intercepted component's ComponentModel. + + The target's ComponentModel + + + + Intercepts the specified invocation and creates a transaction + if necessary. + + The invocation. + + + + + Gets or sets the logger. + + The logger. + + + + Pendent + + + + + Initializes a new instance of the class. + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.dll b/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.dll new file mode 100644 index 0000000..09147eb Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.xml b/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.xml new file mode 100644 index 0000000..acbbce8 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.BatchRegistration.xml @@ -0,0 +1,28 @@ + + + + Castle.Facilities.BatchRegistration + + + + + This method always tries to obtain the type + from the specified assembly. + + + + + + + + Obtains the Type by checking if the + typeName is possible a full type name, or + just an namespace.typename and for the later case, + it tries to load the type from the specified assembly + + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Cache.dll b/slips/build/lib/castle/bin/Castle.Facilities.Cache.dll new file mode 100644 index 0000000..7e19a3d Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Cache.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Cache.xml b/slips/build/lib/castle/bin/Castle.Facilities.Cache.xml new file mode 100644 index 0000000..3b67884 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Cache.xml @@ -0,0 +1,141 @@ + + + + Castle.Facilities.Cache + + + + + Generates the key to retrieve/save objects from/to the cache. + + + + + Generates the key to retrieve/save objects from/to the cache. + + + + + Generates the key for a cache entry. + + the description of an invocation to the intercepted method. + the key for a cache entry. + + + + Generates the key for a cache entry. + + the description of an invocation to the intercepted method. + the key for a cache entry. + + + + Description résumée de ICacheManager. + + + + + Clears all elements from the cache. + + + + + Generates the key to retrieve/save objects from/to the cache. + + + + + Adds an item with the specified key and value into cached data. + Gets a cached object with the specified key. + + The cached object or null + + + + Description résumée de MemoryCache. + + + + + Clears all elements from the cache. + + + + + A generator of keys for a cache entry. + + + + + Adds an item with the specified key and value into cached data. + Gets a cached object with the specified key. + + The cached object or null + + + + Indicates the cache support for a method. + + + + + Summary description for CacheComponentInspector. + + + + + MyMethod + + + + + + + Summary description for CacheConfig. + + + + + Constructor + + + + The globalCacheManagerId us only used when configure by attribute + + + + A + + + + + + + Summary description for CacheConfigHolder. + + + + + Summary description for CacheFacility. + + + + + Caches the return value of the intercepted method. + + + + + Returns from the cache provider the value saved with the key generated + using the specified IMethodInvocation. If the object is not + found in the cache, the intercepted method is executed and its returned + value is saved in the cached and returned by this method. + + the description of the intercepted method. + the object stored in the cache. + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.dll b/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.dll new file mode 100644 index 0000000..1a691f9 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.xml b/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.xml new file mode 100644 index 0000000..cf6f46d --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Db4oIntegration.xml @@ -0,0 +1,33 @@ + + + + Castle.Facilities.Db4oIntegration + + + + + Enable components to take advantage of the capabilities + offered by the db4objects project. + + + + + Performs the tasks associated with freeing, releasing, or resetting + the facility resources. + + It can be overriden. + + + + Overrides the component initialization. + + + + + Overrides the , if the component is the . + + The kernel instance + The component model + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.dll b/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.dll new file mode 100644 index 0000000..35987a1 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.xml b/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.xml new file mode 100644 index 0000000..e945e99 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.DynamicLoader.xml @@ -0,0 +1,205 @@ + + + + Castle.Facilities.DynamicLoader + + + + + Delegates the creation of components to a , + which creates the component on a different . + + + + + Creates a new . + + + + + Creates the component instance by calling the + method. The component is then registered with the + with a renewal time of 2 minutes, in order to stay alive forever. + + + + + Disposes an object, and unregisters it from the . + + The object being destroyed + + + + Closes the used to keep remote objects alive. + + + + + DynamicLoader facility. + + + + + Initializes the facility. + + + + + Terminates the facility. + + + + + Register each batch component. + + The instance in which to register + The component configuration node + + + An example of a valid configuration node: + + <component id="componentid.*"> + <providesService service="Company.Project.IService, Company.Project" /> + </component> + + + + + + + Normalizes a directory path. It includes resolving parent (..) paths + and the ~ prefix, which maps to the root of the current application. + + The directory path + The normalized directory path + + + + + Gets the root directory of the current application. + For web applications, it is obtained from . + For other applications, is used. + + + + + implementation. Releases all s + and s. + + + + + Inspects component configuration nodes, looking for domain + attributes. When found, register a custom activator: . + + + + + Constructor. + + + + + Performs the inspection on the model. + + + + + Stores instances of . + + + + + Register a new loader, for the specified . + + + + + Gets the instance for the specified . + + + + + Registers a specific component on a specific domain. + + + The implementation simply calls to get the correct + , then add the component to the . + + + + + Implementation of . + + + + + Loads components on an isolated . + + + + + Creates a new . This constructor should not be called + directly in the code, but via . + + + + + Searches for implementations of the given services in the current + and add as components. Used by . + + The component id mask. Any * (asterisk) character will be replaced by a sequential number, starting by 1 (one). + The services in which to test + + + + Loads all assemblies in the current . + + + + + Disposes the . + + + + + Checks whether a type is a valid implementation of a + given service . + + The service type + The component type + + true if is a valid implementation of the + service specified by , false otherwise. + + + + + Generates an unique component id, given the . + + The unique component id + + + + Creates a component on an isolated . + + + + + Overrides , + so no lease is returned and the object is kept in memory + as long as the host application domain is running. + + + + + The in which the components are registered. + + + + + The . + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.dll b/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.dll new file mode 100644 index 0000000..da506bf Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.xml b/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.xml new file mode 100644 index 0000000..a5fbbdc --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.IBatisNetIntegration.xml @@ -0,0 +1,23 @@ + + + + Castle.Facilities.IBatisNetIntegration + + + + + Declares that a method does not want to use automatic session creation. + + + + + Declares that a component wants to use a specific IBatis DataMapper Instance. + + + + + Declares that a component wants to use an IBatis's Data Mapper session. + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Logging.dll b/slips/build/lib/castle/bin/Castle.Facilities.Logging.dll new file mode 100644 index 0000000..d25a648 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Logging.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Logging.xml b/slips/build/lib/castle/bin/Castle.Facilities.Logging.xml new file mode 100644 index 0000000..cb38770 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Logging.xml @@ -0,0 +1,75 @@ + + + + Castle.Facilities.Logging + + + + + Custom resolver used by the MicroKernel. It gives + us some contextual information that we use to set up a logging + before satisfying the dependency + + + + + The supported implementations + + + + + A facility for logging support. + + TODO: Document its inner working and configuration scheme + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The LoggerImplementation that should be used + + + + + Initializes a new instance of the class. + + + The LoggerImplementation that should be used + + + The configuration file that should be used by the chosen LoggerImplementation + + + + + Initializes a new instance of the class using a custom LoggerImplementation + + + The configuration file that should be used by the chosen LoggerImplementation + + + The type name of the type of the custom logger factory. + + + + + Initializes a new instance of the class. + + + The LoggerImplementation that should be used + + + The configuration file that should be used by the chosen LoggerImplementation + + + The type name of the type of the custom logger factory. (only used when loggingApi is set to LoggerImplementation.Custom) + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.dll b/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.dll new file mode 100644 index 0000000..ea0c118 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.xml b/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.xml new file mode 100644 index 0000000..54d8f70 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.NHibernateIntegration.xml @@ -0,0 +1,1882 @@ + + + + Castle.Facilities.NHibernateIntegration + + + + + Defines size, enumerators, and synchronization methods for strongly + typed collections of elements. + + + IFieldInfoCollection + provides an that is strongly typed for + elements. + + + + + Copies the entire + to a one-dimensional + of elements, + starting at the specified index of the target array. + + + The one-dimensional that is the destination + of the elements copied + from the . + The Array must have zero-based indexing. + + The zero-based index in + at which copying begins. + + is a null reference. + + is less than zero. + + is equal to or + greater than the length of . + -or- + The number of elements in the source + is greater + than the available space from + to the end of the destination . + + + Please refer to for details. + + + + + Returns an that can + iterate through the . + + + An for the entire + . + + Please refer to + for details. + + + + + Gets the number of elements contained in the + . + + + The number of elements contained in the + . + + + Please refer to for details. + + + + + Gets a value indicating whether access to the + + is synchronized (thread-safe). + + + true if access to the + + is synchronized (thread-safe); otherwise, false. + The default is false. + + Please refer to + for details. + + + + + Gets an object that can be used to synchronize access to the + . + + + An object that can be used to synchronize access to the + . + + + Please refer to for details. + + + + + Represents a strongly typed collection + of objects + that can be individually accessed by index. + + + IFieldInfoList + provides an that is strongly typed for + elements. + + + + + Adds a to the end + of the . + + + The object to be added + to the end of the . + This argument may be a null reference. + + + The index at which + the has been added. + + The is read-only. + -or- + The IFieldInfoList has a fixed size. + + + Please refer to for details. + + + + + Removes all elements from the + . + + + The is read-only. + -or- + The IFieldInfoList has a fixed size. + + + Please refer to for details. + + + + + Determines whether the + contains the specified element. + + + The object to locate + in the . + This argument may be a null reference. + + + true if is found in the + ; otherwise, false. + + + Please refer to for details. + + + + + Returns the zero-based index of the first occurrence + of the specified + in the . + + + The object to locate + in the . + This argument may be a null reference. + + + The zero-based index of the first occurrence of the specified + in the , + if found; otherwise, -1. + + Please refer to for details. + + + + + Inserts a element into the + at the specified index. + + + The zero-based index at which + should be inserted. + + The object to insert + into the . + This argument may be a null reference. + + + is less than zero. + -or- + is greater than + . + + + The is read-only. + -or- + The IFieldInfoList has a fixed size. + + + Please refer to for details. + + + + + Removes the first occurrence of the specified + from the + . + + + The object to remove + from the . + This argument may be a null reference. + + + The is read-only. + -or- + The IFieldInfoList has a fixed size. + + + Please refer to for details. + + + + + Removes the element at the specified index of the + . + + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than + . + + + The is read-only. + -or- + The IFieldInfoList has a fixed size. + + + Please refer to for details. + + + + + Gets a value indicating whether the + has a fixed size. + + + true if the + has a fixed size; otherwise, false. + The default is false. + + Please refer to for details. + + + + + Gets a value indicating whether the + is read-only. + + + true if the + is read-only; otherwise, false. + The default is false. + + Please refer to for details. + + + + + Gets or sets the + element at the specified index. + + + The zero-based index of the + element to get or set. + + The element + at the specified . + + + is less than zero. + -or- + is equal to or greater than + . + + + The property is set, and the + is read-only. + + Please refer to for details. + + + + + Supports type-safe iteration over a collection that contains + elements. + + + IFieldInfoEnumerator + provides an that is strongly typed for + elements. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced + to the next element; false if the enumerator has + passed the end of the collection. + + The collection was modified after the enumerator was created. + + + Please refer to for details. + + + + + Sets the enumerator to its initial position, + which is before the first element in the collection. + + + The collection was modified after the enumerator was created. + + + Please refer to for details. + + + + + Gets the current + element in the collection. + + + The current + element in the collection. + + The enumerator is positioned before the first element + of the collection or after the last element. + -or- + The collection was modified after the enumerator was created. + + + Please refer to for details, + but note that Current fails if the collection was modified + since the last successful call to or + . + + + + + Implements a strongly typed collection + of elements. + + + FieldInfoCollection + provides an that is strongly typed for + elements. + + The property + of the class can be used as a key + to locate elements in the FieldInfoCollection. + + The collection may contain multiple identical keys. All key access + methods return the first occurrence of the specified key, if found. + Access by key is an O(N) operation, where N is the + current value of the property. + + + + + Initializes a new instance of the + class + with the specified data container. + + + The object to share with another instance. + + + This constructor is used to create read-only wrappers. + + + + + Initializes a new instance of the + class. + + + Initializes a new instance of the + class + that is empty and has the default initial capacity. + + + Please refer to for details. + + + + + Initializes a new instance of the + class + that is empty and has the specified initial capacity. + + + The initial number of elements that the new + can contain. + + is less than zero. + + Please refer to for details. + + + + + Initializes a new instance of the + class that + contains elements copied from the specified collection and that + has the same initial capacity as the number of elements copied. + + + The + whose elements are copied to the new collection. + + is a null reference. + + Please refer to for details. + + + + + Initializes a new instance of the + class + that contains elements copied from the specified + array and that has the + same initial capacity as the number of elements copied. + + + An of + elements that are copied to the new collection. + + is a null reference. + + Please refer to for details. + + + + + Adds a to the end + of the . + + + The object to be added + to the end of the . + This argument may be a null reference. + + + The + index at which the has been added. + + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection + already contains , + and the FieldInfoCollection + ensures that all elements are unique. + + Please refer to for details. + + + + + Adds an to the end of the + . + + + The object to be added to the end of the + . This argument + must be compatible with . + This argument may be a null reference. + + + The + index at which the has been added. + + + is not compatible with + . + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection + already contains , + and the FieldInfoCollection + ensures that all elements are unique. + + + Please refer to for details. + + + + + Adds a range of elements to the end of the + . + + + Adds the elements of another collection to the end of the + . + + + The whose elements + should be added to the end of the current collection. + + is a null reference. + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection already contains one + or more elements in , + and the FieldInfoCollection + ensures that all elements are unique. + + + Please refer to for details. + + + + + Adds the elements of a array + to the end of the . + + + An of + elements that should be added to the end of the + . + + is a null reference. + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection already contains + one or more elements in , + and the FieldInfoCollection + ensures that all elements are unique. + + + Please refer to for details. + + + + + Uses a binary search algorithm to locate a specific element + in the sorted + or a portion of it. + + + Searches the entire sorted + for an element using the + specified comparer and returns the zero-based index of the element. + + + The object to locate + in the . + This argument may be a null reference. + + + The implementation + to use when comparing elements. + -or- + A null reference to use the + implementation of each element. + + The zero-based index of in the sorted + , if + is found; otherwise, a negative number, which is the bitwise + complement of the index of the next element that is larger than + or, if there is no larger element, the + bitwise complement of . + + is a null reference, + and FieldInfo does not implement + the interface. + + Please refer to + + for details. + + + + + Searches a section of the sorted + for an + element using the + specified comparer and returns the zero-based index of the element. + + + The zero-based starting index of the range of elements to search. + + The number of elements to search. + + The object to locate + in the . + This argument may be a null reference. + + + The implementation + to use when comparing elements. + -or- + A null reference to use the + implementation of each element. + + The zero-based index of in the sorted + , if + is found; otherwise, a negative number, which is the bitwise + complement of the index of the next element that is larger than + or, if there is no larger element, the + bitwise complement of . + + and + do not denote a valid range of elements in the + . + -or- + is a null reference, + and FieldInfo does not implement + the interface. + + + is less than zero. + -or- + is less than zero. + + + Please refer to + + for details. + + + + + Removes all elements from the . + + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + Please refer to for details. + + + + + Determines whether the + contains the specified element. + + + The object to locate + in the . + This argument may be a null reference. + + + true if is found in the + ; otherwise, false. + + + Please refer to for details. + + + + + Determines whether the + contains the specified element. + + + The object to locate in the + . This argument + must be compatible with . + This argument may be a null reference. + + + true if is found in the + ; otherwise, false. + + + is not compatible with + . + + Please refer to for details. + + + + + Determines whether the contains + the specified value. + + + The value to locate + in the . + This argument may be a null reference. + + + true if is found in the + ; otherwise, false. + + + ContainsKey is similar to but + compares the specified to the value + of the property + of each element, rather than + to the element itself. + + + + + Copies the + or a portion of it to a one-dimensional array. + + + Copies the entire + to a one-dimensional + of elements, + starting at the beginning of the target array. + + + The one-dimensional that is the destination + of the elements copied from the + . + The Array must have zero-based indexing. + + is a null reference. + + The number of elements in the source + is greater than + the available space in the destination . + + + Please refer to for details. + + + + + Copies the entire + to a one-dimensional + of elements, + starting at the specified index of the target array. + + + The one-dimensional that is the destination + of the elements copied from the + . + The Array must have zero-based indexing. + + The zero-based index in + at which copying begins. + + is a null reference. + + is less than zero. + + is equal to or + greater than the length of . + -or- + The number of elements in the source + is greater + than the available space from + to the end of the destination . + + + Please refer to for details. + + + + + Copies the entire + to a one-dimensional , + starting at the specified index of the target array. + + + The one-dimensional that is the destination + of the elements copied from the + . + The Array must have zero-based indexing. + + The zero-based index in + at which copying begins. + + is a null reference. + + is less than zero. + + is multidimensional. + -or- + is equal to or + greater than the length of . + -or- + The number of elements in the source + is greater + than the available space from + to the end of the destination . + + + + cannot be cast automatically to the type of the destination + . + + Please refer to for details. + + + + + Gets the element + associated with the first occurrence of the specified + value. + + + The + value whose element to get. + This argument may be a null reference. + + + The element associated + with the first occurrence of the specified + , if found; otherwise, + a null reference. + + + GetByKey compares the specified + to the value of the + property of each element, + and returns the first matching element. + + + + + Returns an that can + iterate through the . + + + An for the entire + . + + + Please refer to for details. + + + + + Returns an that can iterate through the + . + + + An for the entire + . + + + Please refer to for details. + + + + + Returns the zero-based index of the first occurrence + of the specified in the + . + + + The object + to locate in the . + This argument may be a null reference. + + + The zero-based index of the first occurrence of + in the , + if found; otherwise, -1. + + Please refer to for details. + + + + + Returns the zero-based index of the first occurrence + of the specified in the + . + + + The object to locate in the . + This argument must be compatible with . + This argument may be a null reference. + + + The zero-based index of the first occurrence of + in the , + if found; otherwise, -1. + + is not compatible with + . + + Please refer to for details. + + + + + Returns the zero-based index of the first occurrence of the + specified value + in the . + + + The value + to locate in the . + This argument may be a null reference. + + + The zero-based index of the first occurrence of + in the , + if found; otherwise, -1. + + IndexOfKey is similar to but + compares the specified to the value + of the property + of each element, rather than + to the element itself. + + + + + Inserts a element into the + at the specified index. + + + The zero-based index at which + should be inserted. + + The object to insert + into the . + This argument may be a null reference. + + + is less than zero. + -or- + is greater than . + + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection + already contains , + and the FieldInfoCollection + ensures that all elements are unique. + + + Please refer to for details. + + + + + Inserts an element into the + at the specified index. + + + The zero-based index at which + should be inserted. + + The object to insert into the . + This argument must be compatible with . + This argument may be a null reference. + + + is less than zero. + -or- + is greater than . + + + is not compatible with . + + The + is read-only or has a fixed size. + -or- + The FieldInfoCollection + already contains , + and the FieldInfoCollection + ensures that all elements are unique. + + + Please refer to for details. + + + + + Returns a read-only wrapper for the specified + . + + + The to wrap. + + A read-only wrapper around . + + + is a null reference. + + Please refer to for details. + + + + + Removes the first occurrence of the specified + from the + . + + + The object to remove + from the . + This argument may be a null reference. + + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Removes the first occurrence of the specified + from the . + + + The object to remove from the + . This argument + must be compatible with . + This argument may be a null reference. + + + is not compatible with + . + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Removes the element at the specified index of the + . + + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or + greater than . + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Removes the specified range of elements from the + . + + + The zero-based starting index of the range of elements to remove. + + The number of elements to remove. + + and + do not denote a valid range of elements in the + . + + is less than zero. + -or- + is less than zero. + + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Reverses the order of the elements in the + or a portion of it. + + + Reverses the order of the elements in the entire + . + + + The is read-only. + + + Please refer to for details. + + + + + Reverses the order of the elements in the specified range. + + + The zero-based starting index of the range of elements to reverse. + + The number of elements to reverse. + + and + do not denote a valid range of elements in the + . + + is less than zero. + -or- + is less than zero. + + + The is read-only. + + + Please refer to for details. + + + + + Sorts the elements in the + or a portion of it. + + + Sorts the elements in the entire + using the implementation of each element. + + + The is read-only. + + + One or more elements in the + do not implement the interface. + + + Please refer to for details. + + + + + Sorts the elements in the entire + using the specified comparer. + + + The implementation + to use when comparing elements. + -or- + A null reference to use the + implementation of each element. + + The is read-only. + + + Please refer to + for details. + + + + + Sorts the elements in the specified range + using the specified comparer. + + + The zero-based starting index of the range of elements to sort. + + The number of elements to sort. + + The implementation + to use when comparing elements. + -or- + A null reference to use the + implementation of each element. + + and + do not denote a valid range of elements in the + . + + is less than zero. + -or- + is less than zero. + + + The is read-only. + + + Please refer to + for details. + + + + + Copies the elements of the + to a new of + elements. + + + A one-dimensional of + elements containing copies of the + elements of the . + + + Please refer to for details. + + + + + Sets the capacity to the actual number of elements in the + . + + + The + is read-only or has a fixed size. + + Please refer to for details. + + + + + Gets or sets the capacity of the . + + + The number of elements that the + can contain. + + + Capacity is set to a value that is + less than . + + The property is set, and the + is read-only or has a fixed size. + + Please refer to for details. + + + + + Gets the number of elements contained in the + . + + + The number of elements contained in the + . + + + Please refer to for details. + + + + + Gets a value indicating whether the + has a fixed size. + + + true if the + has a fixed size; otherwise, false. + The default is false. + + Please refer to for details. + + + + + Gets a value indicating whether the + is read-only. + + + true if the + is read-only; otherwise, false. + The default is false. + + Please refer to for details. + + + + + Gets a value indicating whether access to the + is synchronized (thread-safe). + + + true if access to the + is synchronized (thread-safe); otherwise, false. + The default is false. + + Please refer to for details. + + + + + Gets or sets a value indicating whether the + + ensures that all elements are unique. + + + true if the + ensures that all elements are unique; otherwise, + false. The default is false. + + The property is set to true, and the + + already contains duplicate elements. + + The property is set, and the + is read-only. + + IsUnique provides a set-like collection by ensuring that + all elements in the + are unique. + + When changed to true, this property throws an + if the + FieldInfoCollection already contains duplicate + elements. Any subsequent attempt to add an element that is + already contained in the FieldInfoCollection + will cause a . + + + + + Gets or sets the + element at the specified index. + + + The zero-based index of the + element to get or set. + + The element + at the specified . + + + is less than zero. + -or- + is equal to or + greater than . + + The property is set, and the + is read-only. + -or- + The property is set, the FieldInfoCollection + already contains the specified element at a different index, + and the FieldInfoCollection ensures + that all elements are unique. + + Please refer to for details. + + + + + Gets or sets the element at the specified index. + + + The zero-based index of the element to get or set. + + The element at the specified . + When the property is set, this value must be compatible + with . + + + is less than zero. + -or- + is equal to + or greater than . + + The property is set to a value that is not compatible + with . + + The property is set, and the + is read-only. + -or- + The property is set, the FieldInfoCollection + already contains the specified element at a different index, + and the FieldInfoCollection ensures + that all elements are unique. + + Please refer to for details. + + + + + Gets an object that can be used to synchronize access to the + . + + + An object that can be used to synchronize access to the + . + + + Please refer to for details. + + + + + Summary description for ReflectionUtil. + + + + + Gets the property value. + + obj. + Property. + + + + + Gets the PropertyInfo thus named. + + obj. + Property. + + + + + Gets the FieldInfo thus named + + obj. + Field. + + + + + Check if the property is not null and can be read and is no indexed. + This is done to know if it can be read safely. + + Obj. + Prop. + + + + + Determines whether type is simple enough to need just ToString() + to show its state. + (string,int, bool, enums are simple. + Anything else is false. + + + + + Determines whether the object is simple. + An object is simple if its type is simple or if it's null. + + + + + Gets the name of an object. + The name of the object is it's type name or the value of + its Name property or field + + + + + Gets the field value from object, and return + + + + + Gets the value of the object, if the object is simple, the returned string is + the object ToString(), otherwise, it's the object name (if it has one) or the object type. + + + + + Gets all the fields from the object's type with specified attribute + + + + + Converts from string to the type. + Can covert from string, enums booleans, bytes, int32 and datetime + + Text. + Type. + + + + + Gets all the fields WITHOUT ANY of the specified attributes. + + + + + Gets the value of a property or field name in the object. + Or return empty string if there aren't any. + + + + + Sets the name property or value of an object to the value of name. + Does nothing if the object doesn't have any fields or properties named 'name' + + + + + Gets the readable (non indexed) properties names and values. + The keys holds the names of the properties. + The values are the values of the properties + + + + + Gets the fields names and values. + The keys holds the names of the fields. + The values hold the value of the field if it's a simple type, + or the name of the field's type. + + + + + An object has value if it's not null, + an collection containing elements and a non-empty string + + + + + Summary description for DataException. + + + Contributed by Steve Degosserie <steve.degosserie@vn.netika.com> + + + + + Summary description for IGenericDao. + + + Contributed by Steve Degosserie <steve.degosserie@vn.netika.com> + + + + + Summary description for INHibernateGenericDao. + + + Contributed by Steve Degosserie <steve.degosserie@vn.netika.com> + + + + + Summary description for GenericDao. + + + Contributed by Steve Degosserie <steve.degosserie@vn.netika.com> + + + + + HttpModule to set up a session for the request lifetime. + + + + To install the module, you must: + + + + + Add the module to the httpModules configuration section within system.web + + + + Extend the if you haven't + + + Make your HttpApplication subclass implement + so the module can access the container instance + + + + + + + + + + + + + Provides the contract for implementors who want to + store valid session so they can be reused in a invocation + chain. + + + + + Should return a previously stored session + for the given alias if available, otherwise null. + + + + + + + Should store the specified session instance + + + + + + + Should remove the session from the store + only. + + + + + + Returns true if the current activity + (which is an execution activity context) has no + sessions available + + + + + Provides an implementation of + which relies on CallContext + + + + + + + + + + Provides a bridge to NHibernate allowing the implementation + to cache created session (through an invocation) and + enlist it on transaction if one is detected on the thread. + + + + + Returns a valid opened and connected ISession instance + + + + + + Returns a valid opened and connected ISession instance + for the given connection alias. + + + + + + + The flushmode the created session gets + + + + + Initializes a new instance of the class. + + The session store. + The kernel. + The factory resolver. + + + + Dictates the contract for possible different approach + of session factories obtention. + + + Inspired on Cuyahoga project + + + + + Invoked by the facility while the configuration + node are being interpreted. + + + The alias associated with the session factory on the configuration node + + + The component key associated with the session factory on the kernel + + + + + Implementors should return a session factory + instance for the specified alias configured previously. + + + The alias associated with the session factory on the configuration node + + + A session factory instance + + + If the alias is not associated with a session factory + + + + + Adapter to so a + NHibernate transaction can be enlisted within + instances. + + + + + Proxies an ISession so the user cannot close a session which + is controlled by a transaction, or, when this is not the case, + make sure to remove the session from the storage. + + + + + + + + + + + + Default implementation of + that always queries the kernel instance for the session factory instance. + + This gives a chance to developers replace the session factory instance + during the application lifetime. + + + + Inspired on Cuyahoga project + + + + + Constructs a SessionFactoryResolver + + + Kernel instance supplied by the container itself + + + + + Associated the alias with the component key + + + The alias associated with the session + factory on the configuration node + + + The component key associated with + the session factory on the kernel + + + + + Returns a session factory instance associated with the + specified alias. + + + The alias associated with the session + factory on the configuration node + + A session factory instance + + If the alias is not associated with a session factory + + + + + Provides an implementation of + which relies on HttpContext. Suitable for web projects. + + + + + Exposes constants used by the facility and its internal + components + + + + + Provides a basic level of integration with the NHibernate project + + + This facility allows components to gain access to the NHibernate's + objects: + + NHibernate.Cfg.Configuration + NHibernate.ISessionFactory + + + It also allow you to obtain the ISession instance + through the component , which is + transaction aware and save you the burden of sharing session + or using a singleton. + + + The following sample illustrates how a component + can access the session. + + public class MyDao + { + private ISessionManager sessionManager; + + public MyDao(ISessionManager sessionManager) + { + this.sessionManager = sessionManager; + } + + public void Save(Data data) + { + using(ISession session = sessionManager.OpenSession()) + { + session.Save(data); + } + } + } + + + + + + Reads the attribute useReflectionOptimizer and configure + the reflection optimizer accordingly. + + + As reported on Jira (FACILITIES-39) the reflection optimizer + slow things down. So by default it will be disabled. You + can use the attribute useReflectionOptimizer to turn it + on. + + + + + + If has a reference on + NHibernate.Mapping.Attributes : use the NHibernate mapping + attributes contained in that assembly to update NHibernate + configuration (). Else do nothing + + + To avoid an unnecessary dependency on the library + NHibernate.Mapping.Attributes.dll when using this + facility without NHibernate mapping attributes, all calls to that + library are made using reflexion. + + NHibernate configuration + Target assembly name + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.dll b/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.dll new file mode 100644 index 0000000..bdd4a11 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.xml b/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.xml new file mode 100644 index 0000000..de5f184 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Prevalence.xml @@ -0,0 +1,37 @@ + + + + Castle.Facilities.Prevalence + + + + + This inspector registers custom activators for PrevalenceEngines and + PrevalenceSystem. + + + + + Summary description for PrevalenceEngineComponentActivator. + + + + + Summary description for PrevalenceFacility. + + + + + Summary description for PrevalenceSystemComponentActivator. + + + + + To obtain the system instance, we obtain + the engine id that holds this system and use the + apropriate property + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.dll b/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.dll new file mode 100644 index 0000000..b1f09fd Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.xml b/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.xml new file mode 100644 index 0000000..3550c71 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Remoting.TestComponents.xml @@ -0,0 +1,8 @@ + + + + Castle.Facilities.Remoting.TestComponents + + + + diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.dll b/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.dll new file mode 100644 index 0000000..2fd8aea Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.xml b/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.xml new file mode 100644 index 0000000..bbf53e1 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Facilities.Synchronize.xml @@ -0,0 +1,461 @@ + + + + Castle.Facilities.Synchronize + + + + + Exposes constants used by the facility and its internal + components + + + + + Configuration attribute to enable synchronization. + + + + + Configuration attribute to specify context key reference. + + + + + Configuration attribute to specify context service reference. + + + + + Configuration attribute to specify a custom control proxy hook. + + + + + Initializes a new instance of the class. + + The model. + The kernel. + Delegate called on construction. + Delegate called on destruction. + + + + Proxy generation hook to filter all System methods when + proxying a Windows Forms Control. + + + + + Filters System methods. + + The type. + The method info. + true if not a System namespace, false otherwise. + + + + Not used. + + + + + + + Not used. + + + + + Checks for implementations a registers + components to ensure the controls can be safely created and + accessed from different threads. + + + + + Initializes a new instance of the class. + + The kernel. + The config. + + + + Processes implementations. + + The kernel. + The model. + + + + Releases the marshaling control. + + + + + Common support for Windows Form Controls. + + + + + Used to declare that a component wants synchronization. + + + + + Constructs an empty SynchronizeAttribute. + + + + + Constructs the SynchronizeAttribute pointing to a key. + + The component key. + + + + Constructs the SynchronizeAttribute pointing to a service. + + The service type. + + + + Gets the synchronization context reference. + + + + + Obtain synchronization configuration based on the + component configuration check for the attributes if + not available. + + + + + + + + + + + + + Initializes a new instance of the class. + + The kernel. + + + + Checks for synchronization configuration information or + attributes and applies them if valid. + + The kernel. + The model. + + + + Obtains the name of the node. + + + + + + Obtains synchronization information from the configuration. + + The model. + + true if available from configuration; otherwise, false. + + + + + Processes the meta information available on the component + configuration. + + The model. + The methods. + The meta model. + + + + Obtains synchronization information from the attributes. + + The model. + + + + Determines whether the model has implicit synchronization. + + The model. + + true if has implicit synchronization; otherwise, false. + + + + + Applies the synchronization support to the model. + + The model. + + + + Validates the synchronization to be applied. + + The model. + + true if valid synchronization; otherwise, false. + + + + + Identifies the type of synchornization context reference. + + + + + Service interface reference. + + + + + Component key reference. + + + + + Represents a reference to a SynchronizeContext component. + + + + + Initializes a new instance of the class. + + The component key. + + + + Initializes a new instance of the class. + + Type of the service. + + + + Determines if the other reference is equal. + + The other reference. + true if equal, false otherwise. + + + + Gets the hash code. + + The hash code. + + + + Gets the string representation of the reference. + + The string representation of the reference. + + + + Gets the type of the synchronization service. + + The type of the synchronization service. + + + + Gets the synchronization context component key. + + The synchronization component key. + + + + Gets the type of the reference. + + The type of the reference. + + + + Augments the kernel to handle synchronized components. + + + + + Registers all components needed by the facility. + + + + + Registers the synchronization components. + + + + + Registers the synchronization inspectors. + + + + + Intercepts calls to synchronized components and ensures + that they execute in the proper synchronization context. + + + + + Initializes a new instance of the class. + + The kernel. + The meta store. + + + + Sets the intercepted ComponentModel. + + The targets ComponentModel. + + + + Intercepts the invocation and applies any necessary + synchronization. + + The invocation. + + + + Continues the invocation in a synchronization context + if necessary. + + The invocation. + + true if continued; otherwise, false. + + + + + Continues the invocation using the targets implicit + synchronization if necessary. + + The invocation. + + true if continued; otherwise, false. + + + + + Used by the safe synchronization delegate. + + The invocation. + + + + Maintains the synchronization meta-info for a component. + + + + + Initializes a new instance of the class. + + The default synchronization. + + + + Adds the synchronizaed method to the store. + + The method. + The method synchronization. + + + + Gets the reference to the synchronized context + requested by the method. + + The method. + The synchroniztion context reference or null. + + + + Gets the list of unique synchronization context references. + + The list of unique synchronization context references. + + + + Gets the list of synchronized methods. + + The list of synchronized methods. + + + + Maintains the synchronization meta-info for all components. + + + + + Initializes a new instance of the class. + + The kernel. + + + + Creates the meta-info from the specified type. + + The implementation type. + The corresponding meta-info. + + + + Populates the meta-info from the attributes. + + The meta info. + The implementation type. + + + + Creates the meta-info from the configuration. + + The implementation type. + The configuration. + The corresponding meta-info. + + + + Populates the meta-info from the configuration. + + The implementation. + The methods. + The config. + + + + Gets the meta-info for the specified implementation type. + + The implementation type. + The corresponding meta-info. + + + + Registers the meta-info for the specified implementation type. + + The implementation type. + The meta-info. + + + + Creates the synchronization attribute from configuration. + + The configuration. + The corresponding synchronization attribute. + + + + Obtains the . + + The kernel. + The . + + + diff --git a/slips/build/lib/castle/bin/Castle.MicroKernel.dll b/slips/build/lib/castle/bin/Castle.MicroKernel.dll new file mode 100644 index 0000000..9f7616c Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MicroKernel.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MicroKernel.xml b/slips/build/lib/castle/bin/Castle.MicroKernel.xml new file mode 100644 index 0000000..b274bbc --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MicroKernel.xml @@ -0,0 +1,3682 @@ + + + + Castle.MicroKernel + + + + + Abstract implementation of . + The implementors must only override the InternalCreate and + InternalDestroy methods in order to perform their creation and + destruction logic. + + + + + Implements the instance creation logic. The default + implementation should rely on an ordinary call to + Activator.CreateInstance(). + + + This interface is provided in order to allow custom components + to be created using a different logic, such as using a specific factory + or builder. + + The constructor for implementation has the following signature: + + + ComponentModel model, IKernel kernel, + ComponentInstanceDelegate onCreation, + ComponentInstanceDelegate onDestruction + + + The Activator should raise the events onCreation and onDestruction + in order to correctly implement the contract. Usually the best + way of creating a custom activator is by extending the existing ones. + + + + + + + + Should return a new component instance. + + + + + + Should perform all necessary work to dispose the instance + and/or any resource related to it. + + + + + + Constructs an AbstractComponentActivator + + + + + Summary description for ComponentActivatorException. + + + + + Standard implementation of . + Handles the selection of the best constructor, fills the + writable properties the component exposes, run the commission + and decommission lifecycles, etc. + + + Custom implementors can just override the CreateInstance method. + Please note however that the activator is responsible for the proxy creation + when needed. + + + + + Initializes a new instance of the class. + + + + + + + + + Attempts to dynamically load a UserControl by invoking Page.LoadControl. + There are two uses of this class. + + 1) Add a component to the Kernel and add a VirtualPath attribute specifying + the relative path of the .ascx file for the associated UserControl. (easy) + + + + <component id="BasketView" + service="Castle.ShoppingCart.IBasketView, Castle.ShoppingCart" + type="Castle.ShoppingCart.BasketView, Castle.ShoppingCart" + lifestyle="transient" + virtualPath="~/Views/BasketView.ascx" + /> + + + + 2) Precompile a UserControl and add the pre-compiled class to the Kernel. (hard) + Has not been tested with proxies. + + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The on creation. + The on destruction. + + + + Creates the instance. + + The context. + The arguments. + The signature. + + + + + Used during a component request, passed along to the whole process. + This allow some data to be passed along the process, which is used + to detected cycled dependency graphs and now it's also being used + to provide arguments to components. + + + + + Implementors should use a strategy to obtain + valid references to properties and/or services + requested in the dependency model. + + + + + Should return an instance of a service or property values as + specified by the dependency model instance. + It is also the responsability of + to throw an exception in the case a non-optional dependency + could not be resolved. + + Creation context, which is a resolver itself + Parent resolver + Model of the component that is requesting the dependency + The dependency model + The dependency resolved value or null + + + + Returns true if the resolver is able to satisfy this dependency. + + Creation context, which is a resolver itself + Parent resolver + Model of the component that is requesting the dependency + The dependency model + true if the dependency can be satisfied + + + + + + + + + The list of handlers that are used to resolve + the component. + We track that in order to try to avoid attempts to resolve a service + with itself. + + + + + Holds the scoped dependencies being resolved. + If a dependency appears twice on the same scope, we'd have a cycle. + + + + + Check if we are now in the middle of resolving this handler, + and as such, we shouldn't try to resolve that. + + + + Creates a new, empty instance. + A new CreationContext should be created every time, as the contexts keeps some state related to dependency resolution. + + + + Pendent + + + + + Extends adding and + information. Th MemberInfo is only useful to provide detailed information + on exceptions. + The ComponentModel is required so we can get resolve an object that takes as a parameter itself, but + with difference model. (See IoC 51 for the details) + + + + + Exception throw when a circular dependency is detected + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is . + The class name is or is zero (0). + + + + Exception threw when a request for a component + cannot be satisfied because the component does not + exist in the container + + + + + Initializes a new instance of the class. + + The name. + + + + Initializes a new instance of the class. + + The service. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Exception threw when there is a problem + registering a component + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Exception threw by Kernel operations that failed + for some reason. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Exception that is thrown when a error occurs during the Event Wiring process + + + + + Base exception to be used by facilities. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Facility to allow components to dynamically subscribe to events offered by + other components. We call the component that offers events publishers and + the components that uses them, subscribers. + + + A component that wish to subscribe to an event must use the external configuration + adding a node subscribers on the publisher. This node can have multiple entries using the + subscriber node. + + + This example shows two simple components: one is the event publisher and the other is the + subscriber. The subscription will be done by the facility, using the publisher associated configuration. + The Publisher class: + + public class SimplePublisher + { + public event PublishEventHandler Event; + + public void Trigger() + { + if (Event != null) + { + Event(this, new EventArgs()); + } + } + } + + The Subscriber class: + + public class SimpleListener + { + private bool _listened; + private object _sender; + + public void OnPublish(object sender, EventArgs e) + { + _sender = sender; + _listened = sender != null; + } + + public bool Listened + { + get { return _listened; } + } + + public object Sender + { + get { return _sender; } + } + } + + The configuration file: + + + + + + + + + + + + + + + + + + ]]> + + + + + + Base class for facilities. + + + + + Unit of extension. A facility should use + the extension points offered by the kernel + to augment its functionality. + + + + + + + + + + + + + + + + + The custom initialization for the Facility. + + It must be overriden. + + + + Initializes the facility. First it performs the initialization common for all + facilities, setting the and the + . After it, the Init method is invoked + and the custom initilization is perfomed. + + + + + + + Terminates the Facility, invokind the and setting + the Kernel to a null reference. + + + + + Performs the tasks associated with freeing, releasing, or resetting + the facility resources. + + It can be overriden. + + + + Gets the where the facility is registered. + + The . + + + + Gets the facility configuration. + + The representing + the facility configuration. + + + + Overriden. Initializes the facility, subscribing to the , + , Kernel events. + + + + + Checks if the component we're dealing is a publisher. If it is, + parses the configuration (the subscribers node) getting the event wiring info. + + The component model. + Invalid and/or a error in the configuration + + + + Checks if the component we're dealing is a publisher. If it is, + iterates the subscribers starting them and wiring the events. + + The component model. + The instance representing the component. + When the subscriber is not found +
or
+ The handler method isn't found +
or
+ The event isn't found +
+
+ + + Represents the information about an event. + + + + + Initializes a new instance of the class. + + Name of the event. + The name of the handler method. + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + + Gets the name of the event. + + The name of the event. + + + + Gets the handler method name. + + The handler. + + + + + + + + + Activates a object connecting to the remote server. + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The oncreation event handler. + The ondestruction event handler. + + + + Activates a client connecting to the remote server, enforcing the uri and the server activation. + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The oncreation event handler. + The ondestruction event handler. + + + + Activates a client connecting to the remote server through the . + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The oncreation envent handler. + The ondestruction event handler. + + + + Activates a client activated object. + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The oncreation event handler. + The ondestruction event handler. + + + + Activates and publishes a server object. + + + + + Initializes a new instance of the class. + + The model. + The kernel. + The oncreation event handler. + The ondestruction event handler. + + + + Facility to allow the communication with remote kernel, using the .NET Remoting infraestructure. + + + TODO + + + TODO + + + + + Used for client side (Expand explanation) + + + + + Used for server side. + Holds the local registry + + + + + Used for client side. + Holds a remote proxy to the server registry + + + + + Constructs a RemotingFacility + + + + + Performs the tasks associated with freeing, releasing, or resetting + the facility resources. + + It can be overriden. + + + + Inspects the model looking for remote component configuration. If found, + do the component Remoting configuration. + + + + + Implementors must inspect the component for + a given information or parameter. + + + + + Usually the implementation will look in the configuration property + of the model or the service interface, or the implementation looking for + something. + + The kernel instance + The component model + + + + Initializes a new instance of the class. + + The converter. + if set to true is a server. + if set to true is a client. + The base URI. + The remote registry. + The local registry. + + + + Client components are not created by the container + so there's no point collecting constructor dependencies + + + + + + Used in case of generics: + + + + + + + For each new component registered, + some components in the WaitingDependency + state may have became valid, so we check them + + + + + Request the component instance + + + + + + Summary description for ILifecycleConcern. + + + + + Summary description for FactoryInterceptor. + + + + + Summary description for TypedFactoryFacility. + + + + + Implements the basis of + + + + + Contract for the IHandler, which manages an + component state and coordinates its creation + and destruction (dispatching to activators, lifestyle managers) + + + + + Initializes the handler with a reference to the + kernel. + + + + + + Implementors should return a valid instance + for the component the handler is responsible. + It should throw an exception in the case the component + can't be created for some reason + + + + + + Implementors should dispose the component instance + + + + + + Dictionary of String/object used to + associate data with a component dependency. + For example, if you component SmtpServer depends on + host and port, you can add those to this + dictionary and the handler will be able to use them. + + + TODO: Document this + + + + + TODO: Document this + + + + + + TODO: Document this + + + + + + + Gets the state of the handler + + + + + Gets the model of the component being + managed by this handler. + + + + + TODO: Document this + + + + + Might be implemented by a handler + so it can expose access to dependency information + which is used to construct meaningful error messages + + + + + Returns human readable list of dependencies + this handler is waiting for. + list of the dependecies that was already checked, used to avoid cycles. + + + + + Dictionary of Type to a list of + + + + + Dictionary of key (string) to + + + + + Custom dependencies values associated with the handler + + + + + Lifestyle manager instance + + + + + Constructs and initializes the handler + + + + + + Saves the kernel instance, subscribes to + event, + creates the lifestyle manager instance and computes + the handler state. + + + + + + Should be implemented by derived classes: + returns an instance of the component this handler + is responsible for + + + + + + + Should be implemented by derived classes: + disposes the component instance (or recycle it) + + + + + + TODO: Pendent + + + + + + + TODO: Pendent + + + + + + + TODO: Pendent + + + + + + Returns human readable list of dependencies + this handler is waiting for. + + + + + + Creates an implementation of based + on and invokes + to initialize the newly created manager. + + + + + + + Checks if the handler is able to, at very least, satisfy + the dependencies for the constructor with less parameters + + + For each non*optional dependency, the implementation will invoke + + + + + + Invoked by + in order to check if a dependency can be satisfied. + If not, the handler is set to a 'waiting dependency' state. + + + This method registers the dependencies within the correct collection + or dictionary and changes the handler state to + + + + + + + Invoked by the kernel + when one of registered dependencies were satisfied by + new components registered. + + + Handler for the event + + + + + + + Invoked when the container receives a parent container reference. + + + This method implementation checks whether the parent container + is able to supply the dependencies for this handler. + + + + + + + Handler for the event + + + + + + + Gets the handler state. + + + + + Gets the component model. + + + + + + + + + + Summary description for DefaultGenericHandler. + + + TODO: Consider refactoring AbstractHandler moving lifestylemanager + creation to DefaultHandler + + + + + Initializes a new instance of the class. + + + + + + Summary description for DefaultHandler. + + + + + Initializes a new instance of the class. + + + + + + Returns an instance of the component this handler + is responsible for + + + + + + + disposes the component instance (or recycle it) + + + + + + Summary description for DefaultHandlerFactory. + + + + + Extension point to allow the developer + to use his implementation of + + + + + Summary description for HandlerException. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Possible states for a IHandler instance + + + + + The component can be requested + + + + + The component can not be requested + as it still depending on a external + dependency not yet available + + + + + + + + + + + + Redirects resolution to the main resolver, and if not found uses + the parent handler. + + + + + Initializes a new instance of the class. + + The parent handler. + The child resolver. + + + + Summary description for DisposalConcern. + + + + + Summary description for InitializationConcern. + + + + + Summary description for SupportInitializeConcern. + + + + + Pool implementation contract. + + + + + Implementors should return a component instance. + + + + + + Implementors should release the instance or put it + on the pool + + + + + + Initializes the pool to a initial size by requesting + n components and then releasing them. + + + + + Summary description for AbstractLifestyleManager. + + + + + The ILifestyleManager implements + a strategy for a given lifestyle, like singleton, perthread + and transient. + + + The responsability of ILifestyleManager + is only the management of lifestyle. It should rely on + to obtain a new component instance + + + + + Initializes the ILifestyleManager with the + + + + + + + + + Implementors should return the component instance based + on the lifestyle semantic. + + + + + + Implementors should release the component instance based + on the lifestyle semantic, for example, singleton components + should not be released on a call for release, instead they should + release them when disposed is invoked. + + + + + + Summary description for PerThreadLifestyleManager. + + + + + + + + + + Implements a Lifestyle Manager for Web Apps that + create at most one object per web request. + + + + + Implements a Poolable Lifestyle Manager. + + + + + Summary description for SingletonLifestyleManager. + + + + + Summary description for TransientLifestyleManager. + + + + + Inspects the component configuration and the type looking for a + definition of component activator type. The configuration preceeds whatever + is defined in the component. + + + This inspector is not guarantee to always set up an component activator type. + If nothing could be found it wont touch the model. In this case is up to + the kernel to establish a default component activator for components. + + + + + Seaches for the component activator in the configuration and, if unsuccessful + look for the component activator attribute in the implementation type. + + The kernel instance + The model instance + + + + Reads the attribute "componentActivatorType" associated with the + component configuration and verifies it implements the + interface. + + + If the type does not implement the proper interface + + + + + + + Check if the type expose one of the component activator attributes + defined in Castle.Core namespace. + + + + + + Validates that the provide type implements IComponentActivator + + The custom component activator. + + + + Inspects the component configuration and type looking for information + that can influence the generation of a proxy for that component. + + We specifically look for useSingleInterfaceProxy and marshalByRefProxy + on the component configuration or the + attribute. + + + + + + Seaches for proxy behavior in the configuration and, if unsuccessful + look for the attribute in + the implementation type. + + + + + Reads the proxy behavior associated with the + component configuration/type and applies it to the model. + + + If the conversion fails + + + + + + + Returns a instance if the type + uses the attribute. Otherwise returns null. + + + + + + Uses the ConfigurationStore registered in the kernel to obtain + an associated with the component. + + + + + Queries the kernel's ConfigurationStore for a configuration + associated with the component name. + + + + + + + Check for a node 'parameters' within the component + configuration. For each child it, a ParameterModel is created + and added to ComponentModel's Parameters collection + + + + + Inspect the configuration associated with the component + and populates the parameter model collection accordingly + + + + + + + This implementation of + collects all available constructors and populates them in the model + as candidates. The Kernel will pick up one of the candidates + according to a heuristic. + + + + + Only to hold internal constants and get rid of + magic numbers and hardcode names. + + + + + + + + + + Inspect the component for InterceptorAttribute and + the configuration for the interceptors node + + + + + Inspects the type looking for interfaces that constitutes + lifecycle interfaces, defined in the Castle.Model namespace. + + + + + Checks if the type implements and or + interfaces. + + + + + + + Inspects the component configuration and the type looking for a + definition of lifestyle type. The configuration preceeds whatever + is defined in the component. + + + This inspector is not guarantee to always set up an lifestyle type. + If nothing could be found it wont touch the model. In this case is up to + the kernel to estabish a default lifestyle for components. + + + + + Seaches for the lifestyle in the configuration and, if unsuccessful + look for the lifestyle attribute in the implementation type. + + + + + Reads the attribute "lifestyle" associated with the + component configuration and tries to convert to + enum type. + + + + + Check if the type expose one of the lifestyle attributes + defined in Castle.Model namespace. + + + + + Base for inspectors that want configuration associated with methods. + For each child a is created + and added to ComponentModel's methods collection + + + Implementors should override the return + the name of the node to be inspected. For example: + + + + + ]]> + + + + + + This implementation of + collects all potential writable puplic properties exposed by the component + implementation and populates the model with them. + The Kernel might be able to set some of these properties when the component + is requested. + + + + + Initializes a new instance of the class. + + + + + Adds the properties as optional dependencies of this component. + + + + + + + Summary description for DefaultComponentModelBuilder. + + + + + Implementors must construct a populated + instance of ComponentModel by inspecting the component + and|or the configuration. + + + + + Constructs a new ComponentModel by invoking + the registered contributors. + + + + + + + + + + "To give or supply in common with others; give to a + common fund or for a common purpose". The contributor + should inspect the component, or even the configuration + associated with the component, to add or change information + in the model that can be used later. + + + + + Removes the specified contributor + + + + + + Initializes a new instance of the class. + + The kernel. + + + + Constructs a new ComponentModel by invoking + the registered contributors. + + + + + + + + + + "To give or supply in common with others; give to a + common fund or for a common purpose". The contributor + should inspect the component, or even the configuration + associated with the component, to add or change information + in the model that can be used later. + + + + + + Removes the specified contributor + + + + + + Initializes the default contributors. + + + + + Gets the contributors. + + The contributors. + + + + Defines the contract used by the kernel + to obtain proxies for components. The implementor + must return a proxied instance that dispatch + the invocation to the registered interceptors in the model + + + + + Implementors must create a proxy based on + the information exposed by ComponentModel + + The kernel instance + The component model + The component instance to be proxy (only required in some cases) + array of parameters to the constructor (if any) + proxy instance + + + + Implementor should check the component model + and determine if the caller must pass on the component + instance to the proxy + + The kernel instance + The component model + true if an instance must be passed to + + + + Used during the target type inspection process. + Implementors have a chance to interfere in the + proxy generation process + + + + + Invoked by the generation process to know if + the specified member should be proxied + + + + + + + + Invoked by the generation process to notify that a + member wasn't marked as virtual. + + + + + + + Invoked by the generation process to notify + that the whole process is completed. + + + + + This is a placeholder implementation of . + + + The decision to supply no implementation for + is supported by the fact that the MicroKernel should be a thin + assembly with the minimal set of features, although extensible. + Providing the support for this interface would obligate + the user to import another assembly, even if the large majority of + simple cases, no use use of interceptors will take place. + If you want to use however, see the Windsor container. + + + + + Holds the keys used by the proxy factories. + + + + + Key used to supply custom proxy options. + + + + + Represents options to configure proxies. + + + + + Initializes a new instance of the class. + + + + + Adds the additional interfaces to proxy. + + The interfaces. + + + + Equalses the specified obj. + + The obj. + true if equal. + + + + Gets the hash code. + + + + + + Gets or sets the proxy hook. + + + + + Determines if the proxied component uses a target. + + + + + Determines if the proxied component should only include + the service interface. + + + + + Determines if the interface proxied component should inherit + from + + + + + Gets the additional interfaces to proxy. + + The interfaces. + + + + Helper support for proxy configuration. + + + + + Obtains the associated with the . + + The component model. + true if the options should be created if not present. + The associated proxy options for the component model. + + + + Summary description for AllComponentsReleasePolicy. + + + + + Summary description for IReleasePolicy. + + + + + Only tracks components that have decommission steps + registered + + + + + Initializes a new instance of the class. + + + + + No tracking of component instances are made. + + + + + Initializes a new instance of the class. + + + + + Default implementation for . + This implementation is quite simple, but still should be useful + for 99% of situations. + + + + + Implementors should use a strategy to obtain + valid references to properties and/or services + requested in the dependency model. + + + + + This method is called with a delegate for firing the + IKernelEvents.DependencyResolving event. + + The delegate used to fire the event + + + + Registers a sub resolver instance + + The subresolver instance + + + + Unregisters a sub resolver instance previously registered + + The subresolver instance + + + + Initializes a new instance of the class. + + The kernel. + + + + Initializes this instance with the specified dependency delegate. + + The dependency delegate. + + + + Registers a sub resolver instance + + The subresolver instance + + + + Unregisters a sub resolver instance previously registered + + The subresolver instance + + + + Returns true if the resolver is able to satisfy the specified dependency. + + Creation context, which is a resolver itself + Parent resolver + Model of the component that is requesting the dependency + The dependency model + true if the dependency can be satisfied + + + + Try to resolve the dependency by checking the parameters in + the model or checking the Kernel for the requested service. + + + The dependency resolver has the following precedence order: + + + The dependency is checked within the + + + The dependency is checked within the instance for the component + + + The dependency is checked within the registered s + + + Finally the resolver tries the normal flow + which is using the configuration + or other component to satisfy the dependency + + + + Creation context, which is a resolver itself + Parent resolver + Model of the component that is requesting the dependency + The dependency model + The dependency resolved value or null + + + + Extracts the component name from the a ref strings which is + ${something} + + + + + + + + This method rebuild the context for the parameter type. + Naive implementation. + + + + + Summary description for DependencyResolverException. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + This implementation of + does not try to obtain an external configuration by any means. + Its only purpose is to serve as a base class for subclasses + that might obtain the configuration node from anywhere. + + + + + A subsystem is used by the MicroKernel to deal + with a specific concern. + + + + + Initializes the subsystem + + + + + + Should perform the termination + of the subsystem instance. + + + + + The contract used by the kernel to obtain + external configuration for the components and + facilities. + + + + + Associates a configuration node with a facility key + + item key + Configuration node + + + + Associates a configuration node with a component key + + item key + Configuration node + + + + Associates a configuration node with a bootstrap component key + + item key + Configuration node + + + + Adds the child container configuration. + + The container's name. + The config. + + + + Returns the configuration node associated with + the specified child container key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified facility key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified component key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified component key. Should return null + if no association exists. + + item key + + + + + Returns all configuration nodes for facilities + + + + + + Returns all configuration nodes for components + + + + + + Returns all configuration nodes for bootstrap components + + + + + + Gets the child containers configuration nodes. + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Associates a configuration node with a facility key + + item key + Configuration node + + + + Associates a configuration node with a component key + + item key + Configuration node + + + + Associates a configuration node with a bootstrap component key + + + + + Adds the child container configuration. + + The key. + The config. + + + + Returns the configuration node associated with + the specified facility key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified child container key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified component key. Should return null + if no association exists. + + item key + + + + + Returns the configuration node associated with + the specified component key. Should return null + if no association exists. + + + + + + + Returns all configuration nodes for facilities + + + + + + Returns all configuration nodes for bootstrap components + + + + + + Returns all configuration nodes for child containers + + + + + + Returns all configuration nodes for components + + + + + + Base implementation of + + + + + Implements a conversion logic to a type of a + set of types. + + + + + Returns true if this instance of ITypeConverter + is able to handle the specified type. + + + + + + + Returns true if this instance of ITypeConverter + is able to handle the specified type with the specified + configuration + + + + + + + + Should perform the conversion from the + string representation specified to the type + specified. + + + + + + + + Should perform the conversion from the + configuration node specified to the type + specified. + + + + + + + + Returns true if this instance of ITypeConverter + is able to handle the specified type with the specified + configuration + + + + + + The default behavior is to just pass it to the normal CanHadnleType + peeking into the configuration is used for some advanced functionality + + + + + Initializes a new instance of the class. + + + + + This interface is needed because we want to isolate ourself from + the generic parameters, so we can work type safe inside the implementations, + and still call from non generic types outside. + + + + + Initializes a new instance of the class. + + + + + Looks for a on the type to be converted. + If found, the TypeConverter defined by the attribute is used to perform the conversion. + + + + + Marker interface that signals that a converter + depends on IKernel to be able to perform + the conversion. + + + + + Creates the target type instance. + + The type. + The configuration. + + + + + Chooses the first non default constructor. Throws an exception if more than + one non default constructor is found + + + The chosen constructor, or null if none was found + + + + Converts the constructor parameters. + + The constructor. + The configuration. + + + + + Converts the property values. + + The instance. + The type. + The configuration. + + + + Finds the child (case insensitive). + + The config. + The name. + + + + + Gets the conversion manager. + + The conversion manager. + + + + Converts a string representation to an enum value + + + + + Implements all standard conversions. + + + + + Convert a type name to a Type instance. + + + + + Summary description for ConverterException. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Declares a type as being convertible by a and optionally defines the converter to be used + + + + + Defines the to be used to convert the type + + + + + Defines the to be used to convert the type + + + + + + Composition of all available conversion managers + + + + + Establish a composition interface and a subsystem. + Implementors should delegate the conversion to + a instance of a type converter. + + + + + Register a type converter instance. + + + + + + Method finds the next biggest node + It assumes Add puts lesser nodes on the right + + + + Node's left + + + Node's right + + + Node's parent + + + DA Linked List + + + + Creates a ComponentName using a name pattern like + "service:key=value,key2=value2" + + Complete name + + + + Creates a ComponentName with specified service and + properties. + + Service name + Property list. + + + + Serialization constructor. + + + + + + + Parses the full name extracting the service and properties. + + Full name. + + + + Sets up the service. Can be empty but can't be null. + + + + + + Parses and validate a properties list string like + "key=value,key2=value2" and so on. + + Property list. + + + + Validates a properties Hashtable. + + Property list. + + + + Default implementation. + Keeps services and key maps as simple hash tables. Does not + support a query string. + + + + + Contract for SubSystem that wishes to keep and coordinate + component registration. + + + + + Implementors should register the key and service pointing + to the specified handler + + + + + + + Unregister the handler by the given key + + + + + + Unregister the handler by the given service + + + + + + Returns true if there is a component registered + for the specified key + + + + + + + Returns true if there is a component registered + for the specified service + + + + + + + Returns the associated with + the specified key. + + + + + + + Returns an array of that + satisfies the specified query. + + + + + + + Returns the associated with + the specified service. + + + + + Returns the associated with + the specified key with the service type. + + It is expected that this will be used mainly to resolve a generic service + by its key. + + + + + + Returns an array of associated with + the specified service. + + + + + + + Returns all registered. + + + + + + Return s where components are compatible + with the specified service. + + + + + + + List of handler by key + + + + + List of handler by service + + + + + Returns the number of components registered. + + + + + Associates a with + the specified service + + + + + Associates a with + the specified key + + + + + Map(String, IHandler) to map component keys + to + + + + + Map(Type, IHandler) to map services + to + + + + + Initializes a new instance of the class. + + + + + When requesting a component by service, KeySearchNamingSubSystem first + determines if more than one component has been registered for that service. + If not, Default resolution occurs. If so, all of the registered keys for + that service are processed through the provided Predicate to determine which + key to use for service resolution. If no Predicate matches, the default + resolution occurs. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The key predicate. + + + + Registers the given handler with the give key. + + The key. + The handler. + + + + Unregisters the handler associated with the given key + + The key. + + + + Unregisters the handler associated with the given service + + The service. + + + + Executes the Predicate against all keys for the registered service to + determine which component to return. + + The service. + + + + + Alternative implementation. + Extends the default implementation replacing the + key support with a more complete ComponentName. Supports + queries. + + + The user must register components using the following construction + + service:properties + + Where properties is a list of key value pairs (comma separated). Example: + + protocol:secure=true,version=1.2 + + The user can then query for components using the same construction: + + protocol:secure=true + + Or to return all: + + protocol:* + + + + + + Pendent + + + + + An implementation of a should + be able to return instances of + for a given resource identifier. + + + + + Holds the keys used by Kernel to register/request + a subsystem. + + + + + Key used for the configuration store subsystem + + + + + Key used for the conversion manager + + + + + Key used for the naming subsystem + + + + + Key used for the resource subsystem + + + + + Compares if the reference of two objects are equals. + + + + + Summary description for ReferenceExpressionUtil. + + + + + Default implementation of . + This implementation is complete and also support a kernel + hierarchy (sub containers). + + + + + Summary description for KernelEventSupport. + + + + + Summary description for IKernelEvents. + + + + + Event fired when a new component is registered + on the kernel. + + + + + Event fired when a component is removed from the kernel. + + + + + Event fired after the ComponentModel is created. + Allows customizations that may affect the handler. + + + + + Event fired when the kernel was added as child of + another kernel. + + + + + Event fired when the kernel was removed from being a child + of another kernel. + + + + + Event fired before the component is created. + + + + + Event fired when a component instance destroyed. + + + + + Event fired when a new handler is registered + (it might be in a valid or waiting dependency state) + + + + + Event fired when a dependency is being resolved, + it allows the dependency to be changed, + but the client ComponentModel must not be altered. + + + + + Pending + + + + + Pending + + + + + + Pending + + + + + + Pending + + + + + + Pending + + + + + + Pending + + + + + + Pending + + + + + Pending + + + + + + The IKernel interface exposes all the functionality + the MicroKernel implements. + + + It allows you to register components and + request them by the key or the service they implemented. + It also allow you to register facilities and subsystem, thus + augmenting the functionality exposed by the kernel alone to fits + your needs. + + + + + + + Adds a concrete class as a component + + + + + + + Adds a concrete class + as a component with the specified . + + The key with which to index the component. + The of the component. + The specified for the component. + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if , or + are . + + + Thrown if is . + + + + + Adds a concrete class + as a component with the specified . + + The key with which to index the component. + The of the component. + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if or + are . + + + Thrown if is . + + + + Adds a concrete class and an interface + as a component + + The key with which to index the component. + The service that this component implements. + The of the component. + + + + Adds a concrete class and an interface + as a component with the specified . + + The key with which to index the component. + The service that this component implements. + The of the component. + The specified for the component. + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if , , or + are . + + + Thrown if is . + + + + + Adds a concrete class and an interface + as a component with the specified . + + The key with which to index the component. + The service that this component implements. + The of the component. + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if , , or + are . + + + Thrown if is . + + + + + Adds a concrete class as a component + + + + + Adds a concrete class + as a component with the specified . + + The specified for the component. + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if is . + + + + + Adds a concrete class + as a component with the specified . + + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if is . + + + + Adds a concrete class and an interface + as a component + + The service that this component implements. + + + + Adds a concrete class and an interface + as a component with the specified . + + The service that this component implements. + The specified for the component. + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + are . + + + Thrown if is . + + + + + Adds a concrete class and an interface + as a component with the specified . + + The service that this component implements. + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + are . + + + Thrown if is . + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + + Adds a custom made . + Used by facilities. + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + + Returns true if the specified component was + found and could be removed (i.e. no other component depends on it) + + The component's key + + + + + Returns true if the specified key was registered + + + + + + + Returns true if the specified service was registered + + + + + + + Returns the component instance by the service type + + + + + Returns the component instance by the service type + using dynamic arguments + + + + + + + + Returns the component instance by the component key + using dynamic arguments + + + + + + + + Returns a component instance by the key + + + + + + + + Returns the component instance by the service type + using dynamic arguments + + + + + + + Returns the component instance by the component key + + + + + + Returns component instances that implement TService + + + + + + + Returns a component instance by the key + + + + + + + + + Associates objects with a component handler, + allowing it to use the specified dictionary + when resolving dependencies + + + + + + + Associates objects with a component handler, + allowing it to use the specified dictionary + when resolving dependencies + + + + + + + Releases a component instance. This allows + the kernel to execute the proper decomission + lifecycles on the component instance. + + + + + + Constructs an implementation of + for the given + + + + + + + Returns the + for the specified component key. + + + + + + + Returns the + for the specified service. + + + + + + + Return handlers for components that + implements the specified service. + + + + + + + Return handlers for components that + implements the specified service. + The check is made using IsAssignableFrom + + + + + + + Adds a to the kernel. + + + + + + + Returns the facilities registered on the kernel. + + + + + + Adds (or replaces) an + + + + + + + Returns an implementation of + for the specified key. + + + + + + + + Support for kernel hierarchy + + + + + + Remove child kernel + + + + + + Raise the hanlder registered event, required so + dependant handlers will be notified about their dependant moving + to valid state. + + + + + + Returns the component instance by the key + + + + + Returns the component instance by the service type + + + + + Returns the implementation of + + + + + Returns the implementation of + + + + + Gets or sets the implementation of + + + + + Gets or sets the implementation for + + + + + Returns the implementation for + + + + + Gets or sets the implementation of + allowing different strategies for proxy creation. + + + + + Returns the parent kernel + + + + + Graph of components and iteractions. + + + + + The parent kernel, if exists. + + + + + The implementation of + + + + + The implementation of + + + + + The dependency resolver. + + + + + Implements a policy to control component's + disposal that the usef forgot. + + + + + Holds the implementation of + + + + + List of registered. + + + + + Map of subsystems registered. + + + + + List of sub containers. + + + + + Constructs a DefaultKernel with no component + proxy support. + + + + + Constructs a DefaultKernel with the specified + implementation of and + + + + + + + Constructs a DefaultKernel with the specified + implementation of + + + + + Adds a concrete class + as a component with the specified . + + The key with which to index the component. + The of the component. + The specified for the component. + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if or + are . + + + Thrown if is . + + + + + Adds a concrete class + as a component with the specified . + + The key with which to index the component. + The of the component. + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if or + are . + + + Thrown if is . + + + + Adds a concrete class and an interface + as a component with the specified . + + The key with which to index the component. + The service that this component implements. + The of the component. + The specified for the component. + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if , , or + are . + + + Thrown if is . + + + + + Adds a concrete class and an interface + as a component with the specified . + + The key with which to index the component. + The service that this component implements. + The of the component. + The specified for the component. + + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + + If you have indicated a lifestyle for the specified using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if , , or + are . + + + Thrown if is . + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + + Adds a concrete class as a component + + + + + Adds a concrete class + as a component with the specified . + + The specified for the component. + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if is . + + + + + Adds a concrete class + as a component with the specified . + + The specified for the component. + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + Thrown if + + is + + . + + + + Adds a concrete class and an interface + as a component + + The service that this component implements. + + + + Adds a concrete class and an interface + as a component with the specified . + + The service that this component implements. + The specified for the component. + + If you have indicated a lifestyle for the specified T using + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + are . + + + Thrown if is . + + + + + Adds a concrete class and an interface + as a component with the specified . + + The service that this component implements. + The specified for the component. + If , then ignores all other configurations + for lifestyle and uses the value in the parameter. + + attributes, this method will not overwrite that lifestyle. To do that, use the + method. + + + are . + + + Thrown if is . + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + Used mostly by facilities. Adds an instance + to be used as a component. + + + + + + + Returns the component instance by the service type + using dynamic arguments + + + + + + + Returns the component instance by the component key + + + + + + Returns true if the specified component was + found and could be removed (i.e. no other component depends on it) + + The component's key + + + + + Returns the component instance by the service type + + + + + Returns the component instance by the service type + using dynamic arguments + + + + + + + + Returns the component instance by the component key + using dynamic arguments + + + + + + + + Returns a component instance by the key + + + + + + + + Returns a component instance by the key + + + + + + + + + Return handlers for components that + implements the specified service. + + + + + + + Return handlers for components that + implements the specified service. + The check is made using IsAssignableFrom + + + + + + + Returns the facilities registered on the kernel. + + + + + + Gets the service object of the specified type. + + + + A service object of type serviceType. + + + An object that specifies the type of service object to get. + + + + Gets the service object of the specified type. + + + + A service object of type serviceType. + + + + + Starts the process of component disposal. + + + + + Graph of components and iteractions. + + + + + Represents a delegate which holds basic information about a component. + + Key which identifies the component + handler that holds this component and is capable of + creating an instance of it. + + + + + Represents a delegate which holds basic information about a component + and its instance. + + Component meta information + Component instance + + + + Represents a delegate which holds the information about the + component + + + + + Represents a delegate which holds a handler + + handler that holds a component and is capable of + creating an instance of it. + + + + + + Represents a delegate which holds dependency + resolving information. + + +
+
diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.dll b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.dll new file mode 100644 index 0000000..42398a4 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.xml b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.xml new file mode 100644 index 0000000..ce11b6a --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordScaffold.xml @@ -0,0 +1,208 @@ + + + + Castle.MonoRail.ActiveRecordScaffold + + + + + Base abstract class for actions that relate to + Scaffolding support. Provide the basic flow process + + + + Holds the AR type + + + Reference to the template engine instance + + + A map of PropertyInfo to validation failures + + + A list of errors that happened during this process + + + Constructs the data source for the binder + + + Binder that 'knows' ActiveRecord types + + + The model for the AR type we're dealing with + + + Used to define if the model name should be present on the action name (urls) + + + Indicates that the controller has no layout, so we use ours + + + + Initializes a new instance of the class. + + Type of the model. + The template engine. + Indicates that we should use the model name on urls + Whether we should use our layout. + + + + Executes the basic flow which is + + Resolve the + Resolve the layout (if not is associated with the controller, defaults to "scaffold") + Invokes which should perform the correct process for this action + Resolves the template name that the developer might provide by using + If the template exists, renders it. Otherwise invokes + + + + + + + Implementors should return the template name + for the current action. + + + + + + + Only invoked if the programmer havent provided + a custom template for the current action. Implementors + should create a basic html to present. + + + + + + Implementors should perform the action for the + scaffolding, like new or create. + + + + + + Gets the property that represents the Primary key + for the current + + + + + + Gets a value indicating whether the name of the model should + be used on the url. + + true if yes, otherwise false. + + + + Gets the current + + + + + Displays a confirmation message before performing + the removal of the instance + + + Searchs for a template named confirm{name}remove + + + + + Performs the inclusion + + + Searchs for a template named create{name} + + + + + Renders an edit form + + + Searchs for a template named edit{name} + + + + + Renders a list of entities + + + Searchs for a template named list{name} + + + + + Called when the template was not found + + + + + + Renders an inclusion form + + + Searchs for a template named new{name} + + + + + Removes the ActiveRecord instance + + + Searchs for a template named {name}removed + + + + + Uses the dynamic action infrastructure to + add new actions to an existing controller. + + + Provided that a controller uses + like the following code: + + [Scaffolding( typeof(Account) )] + public class AdminController : Controller + { + } + + Then the following dynamic actions will be added: + + newAccount + Presents a form to the user fill in order to create the item on the database + + createAccount + Takes the information submited by the newAccount and creates the item + + editAccount + Presents a form to the user fill in order to update the item on the database + + updateAccount + Takes the information submited by the editAccount and changes the item + + listAccount + Presents a paginated list of items saved + + confirmAccount + Asks the user if he/she confirms the removal of the item + + removeAccount + Attempt to remove the item and presents the results + + + + + + + Performs the update + + + Searchs for a template named create{name} + + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.dll b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.dll new file mode 100644 index 0000000..055a748 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.xml b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.xml new file mode 100644 index 0000000..a3f6daf --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.ActiveRecordSupport.xml @@ -0,0 +1,400 @@ + + + + Castle.MonoRail.ActiveRecordSupport + + + + + Base class for all paginable queries, including custom ones. + + + Extenders should override the . + Optionally, the methods + and can also be overriden. + + + + + Pendent + + + + + Implementors should execute a query + to return the record count + + + + + Executes a query to return the record count + + + + + Returns the page items. + Actually, the implementation just sets the protected fields + and , + gets an from SessionFactoryHolder + and calls in order to execute + the custom query and fetch only the page items. + + The page size + The current page + The page items + + + + The implementation of the method, + as required by . + Should not be overriden. + + The NHibernate Session + The query results. + + + + The implementation of the method, + as required by . + Should not be overriden. + + The NHibernate Session + The query results. + + + + For internal use only. + + + + + Should be overriden to return the custom HQL to be ran. + + The custom HQL to be ran + + + + May be overriden, in order to set custom query parameters. + + The query + + + + Override to provide a custom query execution. + The default behaviour is to just call . + + The query + The query results. + + + + A paginable criteria. + Mimics the interface. + + + + + Implementors should execute a query + to return the record count + + + This needs a performance boost. Couldn't think of a better + way of get the count. + + + + + Performs a simple query and paginate the results. + + + There's no need to supply a returnType, like in + , as we do not perform the + conversion of the query results to an array. + + + + + Pendent + + + + + Paginates using an + + + + + Paginates using an + + + + + Paginates using an + + + + + Paginates using the specified . + + + + + Pendent + + + + + Defines the behavior of + Autoload feature on + + + + + Means that no autoload should be performed on the target + type or on nested types. + + + + + Means that autoload should be used for the target type + and the nested types (if present). This demands that + the primary key be present on the http request + + + + + Does not load the root type, but loads nested types + if the primary key is present. If not present, sets null on nested type. + + + + + Means that we should autoload, but if the key is + invalid, like null, 0 or an empty string, then just + create a new instance of the target type. + + + + + Means that we should autoload target and nested types when the key is valid. + If the key is invalid, like null, 0 or an empty string, and the + instance is the root instance, then create a new instance of the target type. + If the key is invalid, and it's a nested instance, then set null on the nested type. + + + + + Means that we should autoload, but if the key is + invalid, like null, 0 or an empty string, then just + return null + + + + + Extends with + ActiveRecord specific functionallity + + + + + Defines a binder for the parameter + using the and the + specified prefix. + + + This uses the default + whic is + + A name that prefixes the entries on the http request + + + + Defines a binder for the parameter + using the and the + specified prefix. + + A name that prefixes the entries on the http request + The predefined behavior the autoload feature should use + + + + Defines the behavior the autoload feature + should use + + + + + Gets or sets the names of the collection that are expected to be binded. + If the binder does not find any value to an expected collection, it will clear to collection. + + The expect collections names, in a csv fashion. + + + + Extends class with some + ActiveRecord specific functionality. + + + + + Autoload can be turned on on the parameter, see . + + + + + for joined subclasses HasAndBelongsToMany properties doesn't include the ones of the parent class + so we need to check them recursively + + + + + for joined subclasses HasMany properties doesn't include the ones of the parent class + so we need to check them recursively + + + + + for joined subclasses BelongsTo properties doesn't include the ones of the parent class + so we need to check them recursively + + + + + Gets or sets a value indicating if the changes should be persisted. + + true if the changes should be persisted; otherwise, false. + + + + Gets or sets the . + + The auto load behavior. + + + + Gets the current AR model. + + The current AR model. + + + + Mark a parameter with this attribute to instruct the + to load an ActiveRecord instance of the parameter type, using the request parameter + as the identifier. + + + The only loads an instance + based on the primary key value obtained from + For example: + + public class CustomerController : ARSmartDispatcherController + { + public void UpdateCustomerLocation([ARFetch("customer.id")] Customer customer, [ARFetch("location.id")] Location location) + { + customer.Location = location; + customer.Save(); + + RedirectToAction("index"); + } + } + + The code above assumes that you have the fields + customer.id and location.id on the form being + submitted. + + + + + Constructs an + specifying the parameter name and the create and require behavior + + The parameter name to be read from the request + true if you want an instance even when the record is not found + true if you want an exception if the record is not found + + + + Constructs an using the + parameter name as the + + + + + Constructs an specifing the + parameter name + + + + + + Constructs an using the + parameter name as the + and the create and require behavior + + true if you want an instance even when the record is not found + true if you want an exception if the record is not found + + + + The parameter name to be read from the request. The parameter value will + be used as the primary key value to load the target object instance. + + + + + When set to true an instance of + the target type will be created if the record + is not found. The default is false. + + + + + When set to true, an exception will be thrown + if the record specified is not found. The default is false. + + + + + Comma-separated list of lazy associations to eager-fetch, when loading the ActiveRecord object. + + + + + Class responsible on loading records for parameters marked with the . + + + + + Extends the + with ActiveRecord specific functionality + + + + + Initializes a new instance of the class. + + + + + Binds the object using the posted values. + + Defines where the parameters should be obtained from. + Type of the target. + The prefix. + The excluded properties. + The allowed properties. + The auto load behavior. + + + + + Binds the object. + + Defines where the parameters should be obtained from. + Type of the target. + The prefix. + The auto load behavior. + + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.dll b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.dll new file mode 100644 index 0000000..c1c3daa Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.xml b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.xml new file mode 100644 index 0000000..f9011bd --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.Views.NVelocity.xml @@ -0,0 +1,389 @@ + + + + Castle.MonoRail.Framework.Views.NVelocity + + + + + Pendent + + + + + Initializes a new instance of the class. + + The view component factory. + The view engine instance + + + + Processes the first param. + first param can either be the literal string 'with' which means the user + is using the syntax #blockcomponent(ComponentName with "param1=value1" "param2=value2") + or it could be a dictionary string like: + #blockcomponent(ComponentName "#{ param1='value1', param2='value2' }") + anything different than that will throw an exception + + The node. + The context. + The children count. + + + + + Pendent + + + + + Render's the contents of the directive and store them in the context + variable so it can be referenced later on the template + + #capturefor(someId) + Some content goes here + #end + + $someId + + + + + Pendent + + + + + How this directive is to be initialized. + + + + + How this directive is to be rendered + + + + + Return the name of this directive + + + + + Get the directive type BLOCK/LINE + + + + + Provides a helper to access static operations on types to NVelocity. + + the type to access + + + + Invoke a get operation on the value type + + the property or field to get + the value + + + + Invoke a method on the value type + + the method name + the argumenents. + the result of the method invocation. + + + + Invoke a set operation on the value type + + the property or field to set + the value to set the property or field to. + + + + Pendent + + + + + Defines the behavior when a property is read + + Property name. + value back to the template + + + + Defines the behavior when a property is written + + Property name. + The value to assign. + + + + Invokes the specified method. + + The method name. + The method arguments. + value back to the template + + + + + + + + + Defines the behavior when a property is read + + Property name. + value back to the template + + + + Defines the behavior when a property is written + + Property name. + The value to assign. + + + + Invokes the specified method. + + The method name. + The method arguments. + value back to the template + + + + + + + + + Initializes a new instance of the class. + + The generator. + + + + Defines the behavior when a property is read + + Property name. + value back to the template + + + + Defines the behavior when a property is written + + Property name. + The value to assign. + + + + Invokes the specified method. + + The method name. + The method arguments. + value back to the template + + + + Pendent + + + + + Initializes a new instance of the class. + + + + + Manages resource (views) loading and processing, calls and is also + called by NVelocity to allow recursive expansion of templates + + + + + gets the named resource as a stream, parses and inits + + + + + 's implementation for + NVelocity + + + + + Initializes a new instance of the class. + + Name of the component. + The parent node. + The view engine. + The view renderer. + + + + Determines whether the current component declaration on the view + has the specified section. + + Name of the section. + + true if the specified section exists; otherwise, false. + + + + + Renders the component body. + + + + + Pendent + + + + + + + Renders the the specified section + + Name of the section. + + + + Renders the the specified section + + Name of the section. + The writer. + + + + Renders the body into the specified + + The writer. + + + + Gets the name of the component. + + The name of the component. + + + + Gets the dictionary that holds variables for the + view and for the view component + + The context vars. + + + + Gets the component parameters that the view has passed + to the component + + The component parameters. + + + + Gets or sets the view to render. + + The view to render. + + + + Gets the writer used to render the component + + The writer. + + + + Gets the view engine instance. + + The view engine. + + + + Implements a view engine using the popular Velocity syntax. + + For details on the syntax, check the VTL Reference Guide + http://jakarta.apache.org/velocity/docs/vtl-reference-guide.html + + + + + + Creates a new instance. + + + + + Evaluates whether the specified template exists. + + + true if it exists + + + + Processes the specified context. + + The context. + The controller. + Name of the view. + + + + Processes the view - using the templateName to obtain the correct template + and writes the results to the System.TextWriter. No layout is applied! + + + + + Initializes basic velocity properties. The main purpose of this method is to + allow this logic to be overrided. + + The collection to populate. + + + + Resolves the template name into a velocity template file name. + + + + + Resolves the template name into a velocity JS template file name. + + + + + Resolves the layout template name into a velocity template file name. + + + + + Gets a value indicating whether the view engine + support the generation of JS. + + + true if JS generation is supported; otherwise, false. + + + + + Gets the view file extension. + + The view file extension. + + + + Gets the JS generator file extension. + + The JS generator file extension. + + + + This exception is thrown when an error occurs during resource processing (expansion) + + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Framework.dll b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.dll new file mode 100644 index 0000000..8f04863 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Framework.xml b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.xml new file mode 100644 index 0000000..31d1e64 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.Framework.xml @@ -0,0 +1,20332 @@ + + + + Castle.MonoRail.Framework + + + + + Adapter to expose a valid + implementation on top of HttpContext. + + + + + Basic implementation of + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The parent. + + + + Adds the specified service to the service container. + + The type of service to add. + An instance of the service type to add. This object must implement or inherit from the type indicated by the serviceType parameter. + + + + Adds the specified service to the service container, and optionally promotes the service to any parent service containers. + + The type of service to add. + An instance of the service type to add. This object must implement or inherit from the type indicated by the serviceType parameter. + true to promote this request to any parent service containers; otherwise, false. + + + + Adds the specified service to the service container. + + The type of service to add. + A callback object that is used to create the service. This allows a service to be declared as available, but delays the creation of the object until the service is requested. + + + + Adds the specified service to the service container, and optionally promotes the service to parent service containers. + + The type of service to add. + A callback object that is used to create the service. This allows a service to be declared as available, but delays the creation of the object until the service is requested. + true to promote this request to any parent service containers; otherwise, false. + + + + Removes the specified service type from the service container. + + The type of service to remove. + + + + Removes the specified service type from the service container, and optionally promotes the service to parent service containers. + + The type of service to remove. + true to promote this request to any parent service containers; otherwise, false. + + + + Gets the service object of the specified type. + + An object that specifies the type of service object to get. + + A service object of type serviceType.-or- null if there is no service object of type serviceType. + + + + + Gets the service. + + + + + + + Gets or sets the parent container. + + The parent. + + + + Gets the parent container. + + The parent container. + + + + Represents an abstraction between the MonoRail API + and the ASP.Net API. + + + + + Transfer the execution to another resource. + + + + + + + Request a service from the engine context. + + Service type + Service instance + + + + Gets the request type (GET, POST, etc) + + + + + Gets the request URL. + + + + + Gets the referring URL. + + + + + Gets the underlying context of the API being used. + + + + + Access the params (Query, Post, headers and Cookies) + + + + + Access the session objects. + + + + + Gets the request object. + + + + + Gets the response object. + + + + + Gets the trace object. + + + + + Access the Cache associated with this + web execution context. + + + + + Access a dictionary of volative items. + + + + + Gets or sets the current user. + + + + + Gets the last exception raised during + the execution of an action. + + + + + Returns the application path. + + + + + Returns the physical application path. + + + + + Returns the of the the current request. + + + + + Returns an . + + + + + Returns the Items collection from the current HttpContext. + + + + + Gets or sets the current controller. + + The current controller. + + + + If a container is available for the app, this + property exposes its instance. + + + + + Initializes a new instance of the class. + + The parent. + Url information + The context. + External container instance + + + + Transfer the execution to another resource. + + + + + + + Resolves the request session. + + + + + Gets the last exception raised during + the execution of an action. + + + + + + Gets the request type (GET, POST, etc) + + + + + + Gets the request URL. + + + + + + Gets the referring URL. + + + + + + Gets the underlying context of the API being used. + + + + + + Access the params (Query, Post, headers and Cookies) + + + + + + Access the session objects. + + + + + + Gets the request object. + + + + + + Gets the response object. + + + + + + Gets the trace object. + + + + + + Returns an . + + + + + + Access the Cache associated with this + web execution context. + + + + + + Access a dictionary of volative items. + + + + + + Gets or sets the current user. + + + + + + Returns the of the the current request. + + + + + + Returns the application path. + + + + + + Returns the physical application path. + + + + + Returns the Items collection from the current HttpContext. + + + + + + Gets or sets the current controller. + + The current controller. + + + + If a container is available for the app, this + property exposes its instance. + + + + + Adapts the ASP.Net HttpFileCollection to MonoRail dictionary + + + + + Initializes a new instance of the class. + + The file collection. + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + true if the contains an element with the key; otherwise, false. + + key is null. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + An element with the same key already exists in the object. + key is null. + The is read-only.-or- The has a fixed size. + + + + Removes all elements from the object. + + The object is read-only. + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + The object is read-only.-or- The has a fixed size. + key is null. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in array at which copying begins. + array is null. + index is less than zero. + array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. + The type of the source cannot be cast automatically to the type of the destination array. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets an object containing the keys of the object. + + + An object containing the keys of the object. + + + + Gets an object containing the values in the object. + + + An object containing the values in the object. + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + Gets or sets the with the specified key. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + This class adapts the HttpRequest to a MonoRail IRequest. + + + + + Represents the request data + + + + + Reads the request data as a byte array. + + How many bytes. + + + + + Reads the cookie. + + The cookie name. + + + + + Validates the input. + + + + + Gets the Http headers. + + The Http headers. + + + + Gets the per key. + + + + + Gets the params which accumulates headers, post, querystring and cookies. + + The params. + + + + Gets a value indicating whether this requeest is from a local address. + + true if this instance is local; otherwise, false. + + + + Gets the raw URL. + + The raw URL. + + + + Gets the URI. + + The URI. + + + + Gets the HTTP method. + + The HTTP method. + + + + Gets the file path. + + The file path. + + + + Gets the param with the specified key. + + + + + + Gets the query string. + + The query string. + + + + Gets the form. + + The form. + + + + Gets the user languages. + + The user languages. + + + + Gets the IP host address of the remote client. + + The IP address of the remote client. + + + + Initializes a new instance of the class. + + The request. + + + + Reads the request data as a byte array. + + How many bytes. + + + + + Reads the cookie. + + The cookie name. + + + + + Validates the input. + + + + + Gets the Http headers. + + The Http headers. + + + + Gets a value indicating whether this requeest is from a local address. + + true if this instance is local; otherwise, false. + + + + Gets the HTTP method. + + The HTTP method. + + + + Gets the URI. + + The URI. + + + + Gets the raw URL. + + The raw URL. + + + + Gets the file path. + + The file path. + + + + Gets the query string. + + The query string. + + + + Gets the form. + + The form. + + + + Gets the param with the specified key. + + + + + + Gets the per key. + + + + + + Gets the params which accumulates headers, post, querystring and cookies. + + The params. + + + + Gets the user languages. + + The user languages. + + + + Gets the IP host address of the remote client. + + The IP address of the remote client. + + + + Adapts the to + an instance. + + + + + Represents the response data and operations + + + + + Appends the header. + + The name. + The value. + + + + Writes the buffer to the browser + + The buffer. + + + + Writes the stream to the browser + + The stream. + + + + Clears the response (only works if buffered) + + + + + Clears the response content (only works if buffered). + + + + + Writes the specified string. + + The string. + + + + Writes the specified obj. + + The obj. + + + + Writes the specified char. + + The char. + + + + Writes the specified buffer. + + The buffer. + The index. + The count. + + + + Writes the file. + + Name of the file. + + + + Redirects the specified controller. + + The controller. + The action. + + + + Redirects the specified area. + + The area. + The controller. + The action. + + + + Redirects the specified URL. + + The URL. + + + + Redirects the specified URL. + + The URL. + if set to true [end process]. + + + + Creates a cookie. + + The name. + The value. + + + + Creates a cookie. + + The name. + The value. + The expiration. + + + + Creates a cookie. + + The cookie. + + + + Removes a cookie. + + The name. + + + + Gets or sets the status code. + + The status code. + + + + Gets or sets the type of the content. + + The type of the content. + + + + Gets the caching policy (expiration time, privacy, + vary clauses) of a Web page. + + + + + Sets the Cache-Control HTTP header to Public or Private. + + + + + Gets or sets the HTTP character set of the output stream. + + + + + Gets the output. + + The output. + + + + Gets the output stream. + + The output stream. + + + + Gets a value indicating whether the response sent a redirect. + + true if was redirected; otherwise, false. + + + + Gets a value indicating whether this instance is client connected. + + + true if this instance is client connected; otherwise, false. + + + + + Initializes a new instance of the class. + + The response. + The parent context. + The app path. + + + + Appends the header. + + The name. + The header value. + + + + Writes the buffer to the browser + + The buffer. + + + + Writes the stream to the browser + + The stream. + + + + Clears the response (only works if buffered) + + + + + Clears the response content (only works if buffered). + + + + + Writes the specified string. + + The string. + + + + Writes the specified obj. + + The obj. + + + + Writes the specified char. + + The char. + + + + Writes the specified buffer. + + The buffer. + The index. + The count. + + + + Writes the file. + + Name of the file. + + + + Redirects the specified URL. + + The URL. + + + + Redirects the specified URL. + + The URL. + if set to true [end process]. + + + + Redirects the specified controller. + + The controller. + The action. + + + + Redirects the specified area. + + The area. + The controller. + The action. + + + + Creates the cookie. + + The name. + The cookie value. + + + + Creates the cookie. + + The name. + The cookie value. + The expiration. + + + + Creates the cookie. + + The cookie. + + + + Removes the cookie. + + The name. + + + + Gets the caching policy (expiration time, privacy, + vary clauses) of a Web page. + + + + + Sets the Cache-Control HTTP header to Public or Private. + + + + + Gets or sets the HTTP character set of the output stream. + + + + + Gets or sets the status code. + + The status code. + + + + Gets or sets the content type. + + The type of the content. + + + + Gets the output. + + The output. + + + + Gets the output stream. + + The output stream. + + + + Gets a value indicating whether this instance is client connected. + + + true if this instance is client connected; otherwise, false. + + + + + Gets a value indicating whether the response sent a redirect. + + true if was redirected; otherwise, false. + + + + Adapts the ASP.Net HttpServerUtility to MonoRail's interface for the same service. + + + + + Represents utility methods that web servers provide + + + + + Returns the physical path for the + specified virtual path. + + The virtual path. + The mapped path + + + + HTML encodes a string and returns the encoded string. + + The text string to HTML encode. + The HTML encoded text. + + + + URL encodes a string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + URL decodes a string and returns the decoded string. + + The text to URL decode. + The URL decoded text. + + + + URL encodes the path portion of a URL string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + Escapes JavaScript with Url encoding and returns the encoded string. + + + Converts quotes, single quotes and CR/LFs to their representation as an escape character. + + The text to URL encode and escape JavaScript within. + The URL encoded and JavaScript escaped text. + + + + Initializes a new instance of the class. + + The server. + + + + HTML encodes a string and returns the encoded string. + + The text string to HTML encode. + The HTML encoded text. + + + + Escapes JavaScript with Url encoding and returns the encoded string. + + + Converts quotes, single quotes and CR/LFs to their representation as an escape character. + + The text to URL encode and escape JavaScript within. + The URL encoded and JavaScript escaped text. + + + + URL encodes a string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + URL decodes a string and returns the decoded string. + + The text to URL decode. + The URL decoded text. + + + + URL encodes the path portion of a URL string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + Returns the physical path for the + specified virtual path. + + The virtual path. + The mapped path + + + + Adapts the ASP.Net session as a simple dictionary for MonoRail + + + + + Initializes a new instance of the class. + + The session. + + + + Returns an object for the object. + + + An object for the object. + + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in array at which copying begins. + array is null. + index is less than zero. + array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. + The type of the source cannot be cast automatically to the type of the destination array. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + true if the contains an element with the key; otherwise, false. + + key is null. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + An element with the same key already exists in the object. + key is null. + The is read-only.-or- The has a fixed size. + + + + Removes all elements from the object. + + The object is read-only. + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + The object is read-only.-or- The has a fixed size. + key is null. + + + + Gets an object containing the keys of the object. + + + An object containing the keys of the object. + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + Gets an object containing the values in the object. + + + An object containing the values in the object. + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + Gets or sets the with the specified key. + + + + + + Delegates to ASP.Net TraceContext. + + + + + Represents the trace that ASP.Net exposes + + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Initializes a new instance of the class. + + The trace context. + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Enum to identify a http verb + + + + + The GET method means retrieve whatever information is identified by the Request-URI. + + The convention has been established that the GET method SHOULD + NOT have the significance of taking an action other than retrieval. + + + + + + The POST method is used to request that the origin server accept the entity + enclosed in the request as a new subordinate of the resource identified by the + Request-URI in the Request-Line. + + The convention has been established that the POST method will + take an action other than just retrieval. + + + + + + Decorates an action with a restriction to the HTTP method + that is allowed to request it. + + + + + Constructs a AccessibleThroughAttribute with + the specified . + + The to allow for this action. + + + + The Verb to allow. + + + + + Defines that an action is accessible through AJAX calls, + so can generate a JavaScript proxy for it. + + + + + Method marked with this attribute will be accessible through AJAX calls, + and will be able to generate a JavaScript proxy for them. + + + + + Method marked with this attribute will be accessible through AJAX calls, + and will be able to generate a JavaScript proxy for them. + + + A name for the action, on the JavaScript proxy. Useful when dealing with + overloaded Ajax actions, as JavaScript does not support function overloading. + + + + + A name for the action, on the JavaScript proxy. Useful when dealing with + overloaded Ajax actions, as JavaScript does not support function overloading. + + + + + Defines the cache configuration for an action. + + + + + Custom attributes can implement this + interface to have a chance to apply + some specific configuration to the + + + + + + Implementors should configure + the specified policy. + + The cache policy. + + + + Initializes a new instance of the class. + + Sets the Cache-Control HTTP header. + The Cache-Control HTTP header controls how documents are to be cached on the network. + + + + Configures ASP.Net's Cache policy based on properties set + + cache policy to set + + + + From MSDN: Makes the response is available in the client browser + History cache, regardless of the HttpCacheability setting + made on the server, when the allow parameter is true. + + + When HttpCacheability is set to NoCache or ServerAndNoCache the Expires + HTTP header is by default set to -1; this tells the client not to + cache responses in the History folder, so that when you use the back/forward buttons + the client requests a new version of the response each time. You can override this + behavior by calling the SetAllowResponseInBrowserHistory method with the + allow parameter set to true. + + If HttpCacheability is set to values other than NoCache or ServerAndNoCache, calling the SetAllowResponseInBrowserHistory method with either value for allow has no effect. + + + + + + From MSDN: Sets cache expiration to from absolute to sliding. + + + When cache expiration is set to sliding, the Cache-Control + HTTP header will be renewed with each response. This expiration mode + is identical to the IIS configuration option to add an expiration + header to all output set relative to the current time. + + If you explicitly set sliding expiration to off (false), that setting + will be preserved and any attempts to enable sliding expiration will + silently fail. This method does not directly map to an HTTP header. + It is used by subsequent modules or worker requests to set origin-server cache policy. + + + + + + Specifies whether the ASP.NET cache should ignore HTTP Cache-Control + headers sent by the client that invalidate the cache. + + + This method is provided because some browsers, when refreshing a + page view, send HTTP cache invalidation headers to the Web server + and evict the page from the cache. When the validUntilExpires parameter + is true, ASP.NET ignores cache invalidation headers and the page + remains in the cache until it expires. + + + + + Sets the ETag HTTP header to the specified string. + + + The ETag header is a unique identifier for a specific version of + a document. It is used by clients to validate client-cached content to + avoid requesting it again. Once an ETag header is set, subsequent + attempts to set it fail and an exception is thrown. + + + + + Cache Duration (in seconds) + + + + + Specifies a custom text string to vary cached output responses by. + + + + + Gets or sets the list of all HTTP headers that will be used to vary cache output. + + + When a cached item has several vary headers, a separate version of + the requested document is available from the cache for each HTTP header type. + + + + + Gets or sets the list of parameters received by an HTTP GET or HTTP POST that affect caching. + + + A separate version of the requested document is available from the cache + for each named parameter in the VaryByParams collection. + + + + + Decorates a controller with a different name + and optionally an area which the controller belongs to. + This is used to override the convention for controller + names and to optionally associate a controller with an + area name. + + + + + Constructs a ControllerDetailsAttribute + + + + + Constructs a ControllerDetailsAttribute + with a name for the controller. + + The specified Controller Name + + + + The controller's name + + + + + The controller's area + + + + + Defines where the parameters should be obtained from + + + + + Query string + + + + + Only from the Form + + + + + From QueryString, Form and Environment variables. + + + + + The DataBind Attribute is used to indicate that an Action methods parameter + is to be intercepted and handled by the . + + + Allowed usage is one per method parameter, and is not inherited. + + + + + Implemented by attributes that wants to perform + some conversion to populate a smart dispatcher + action argument. + + + + + + Calculates the param points. Implementors should return value equals or greater than + zero indicating whether the parameter can be bound successfully. The greater the value (points) + the more successful the implementation indicates to the framework + + The controller. + The parameter info. + + + + + Binds the specified parameters for the action. + + The controller. + The parameter info. + + + + + Creates a + with an associated prefix. The prefix must be present + in the form data and is used to avoid name clashes. + + + + + + Implementation of + and it is used to give the method a weight when overloads are available. + + The controller instance + The parameter info + Positive value if the parameter can be bound + + + + Implementation of + and it is used to read the data available and construct the + parameter type accordingly. + + The controller instance + The parameter info + The bound instance + + + + Creates the binder. + + + + + + Configures the validator. + + The controller. + The binder. + + + + Populates the validator error summary. + + The controller. + The binder. + The instance. + + + + Binds the instance errors. + + The controller. + The binder. + The instance. + + + + Gets or sets the property names to exclude. + + The property name should include the prefix. + A comma separated list + of property names to exclude from databinding. + + + + Gets or sets the property names to allow. + + The property name should include the prefix. + A comma separated list + of property names to allow from databinding. + + + + Gets or sets a value indicating whether + the target should be validate during binding. + + true if should be validated; otherwise, false. + + + + Gets or sets used to + indicate where to get the values from + + The type. + Typically . + + + + Gets the databinding prefix. + + + The prefix is a name followed by a + dot that prefixes the entries names + on the source http request. + + The databinding prefix. + + + + Declares that the Controller should enable a DefaultAction method + for request processing if no action can be found with the supplied name + + + + + Constructs a + using DefaultAction + as the default action name + + + + + Constructs a + using the supplied value as the default action name + + + + + Gets the default action name + + + + + Associates a provider that can add dynamic actions + to a controller + + + + + Constructs a + associating the supplied type as the action provider. + + + + + + Gets the provider type + + + + + Decorates a controller associating a + implementation with it. More than one can be associated. + + + If more than one filter is associate with an action (or controller and + action), the order of execution cannot be predicted. In this case + use to define the order of execution. + + + + + Contract for builders. + + + + + Builds the filter descriptors. + + + + + + Constructs a FilterAttribute associating + the filter type and when the filter should be invoked. + + When to execute the filter + The filter implementation + + + + Implementation of . + Returns the descriptor for this filter association. + + + + + + Gets the filter implementation type + + + + + Gets when to run the filter + + + + + Gets or sets the filter execution order. + The lower the value, the higher the priority + + + + + Associates a helper class with the controller. + + + + + Contract for builders + + + + + Builds the helper descriptors. + + + + + + Constructs a + with the supplied helperType. + + The helper type + + + + Constructs a + with the supplied helperType and a name to be bound to it. + + The helper type + Name bound to the helper. The name will be + used on the view to gain access to it + + + + implementation. + Gets the + that describes the helper. + + The descriptor instance + + + + Gets Name bound to the helper. The name will be + used on the view to gain access to it + + + + + Gets the helper type + + + + + Associates a layout name with a controller. + The layout can later be changed using the LayoutName + property of the . + + + + + Contract for builders + + + + + Builds the layout descriptor. + + + + + + Constructs a LayoutAttribute with the + layout name. + + + + + implementation. + Gets the descriptor that describes the layout. + + + + + Gets the layout name + + + + + This is an special filter attribute. It is used + to define from where MonoRail should read the localization information + to find out the locale of the client. + + For example, it can use the browser, or a cookie, an entry in the + query string (or even in the session) + + + + + + Defines that + you want to use a cookie named + "locale", but if that fails it falls back + to the client's browser locale. + + + + + Defines a new LocalizationFilter. + + Location where the localization parameter is stored. + Name of the parameter in the store. + + + + Key under which the locale value is stored. + + + + + Location where the locale value is to be stored. + + + + + True if an exception is to be thrown when a specific + culture appears to be incorrect (can't be created). + + + + + Use client browser defined languages as default. + + + + + Apply PersistFlashFilter, which preserve all flash contents + after execution of all actions on the applied controller. + + + + + Default constructor. This would persist the entire flash bag. + + + + + Associates a rescue template with a or an action + (method). The rescue is invoked in response to some exception during the + action processing. + + + The view must exist in the rescues folder in your view folder + + + + + Contract for builders + + + + + Builds the rescue descriptors. + + + + + + Constructs a RescueAttribute with the template name. + + The view to use in the event of error + + + + Constructs a RescueAttribute with the template name and exception type. + + The view to use in the event of error + The exception to match + + + + implementation. + Builds the rescue descriptors. + + + + + + Gets the view name to use + + + + + Gets the exception type + + + + + Declares that for the specified class or method, the given resource file should be + loaded and set available in the PropertyBag with the specified name. + + + + + Contract for builders + + + + + Builds the resource descriptors. + + + + + + Constructs a resource attribute, with the specified name, based + on the resource in a satellite assembly. + + Name the resource will be available as in the PropertyBag + Fully qualified name of the resource in the sattelite assembly + + + + implementation. + Builds the resource descriptors. + + + + + + Gets or sets the Name the of resource that will be available in the PropertyBag. + + The name. + + + + Gets or sets the Fully qualified name of the resource in the sattelite assembly. + + The name of the resource. + + + + Gets or sets the name of the culture. + + The name of the culture. + + + + Gets or sets the name of the assembly. + + The name of the assembly. + + + + Gets or sets the type of the resource. + + The type of the resource. + + + + Associates scaffolding support with a controller. + + + + + Initializes a new instance of the class. + + The model/entity that should be implemented + + + + Gets the model/entity type + + The model/entity type. + + + + Declares that for the specific method (action) + no filter should be applied -- or an specific filter should be + skipped. + + + + + Constructs a SkipFilterAttribute which skips all filters. + + + + + Constructs a SkipFilterAttribute associating + the filter type that should be skipped. + + The filter type to be skipped + + + + Gets the type of the filter. + + The type of the filter. + + + + Gets a value indicating whether [blanket skip]. + + true if [blanket skip]; otherwise, false. + + + + Declares that for the specific + method (action) no rescue should be performed. + + + + + Decorates an action associating a + implementation with it. More than one can be associated. + + + If more than one filter is associate with an action (or controller and + action), the order of execution cannot be predicted. In this case + use to define the order of execution. + + + + + Contract for builders + + + + + Builds the transform filter descriptors. + + + + + + Constructs a TransformFilterAttribute associating the transformfilter type. + + The transformfilter implementation + + + + Implementation of . + Returns the descriptor for this filter association. + + + + + + Gets the type of the transform filter. + + The type of the transform filter. + + + + Gets or sets the execution order. + + The execution order. + + + + Decorates a to associate a custom name with it. + + Optionally you can associate the section names supported by the + . + + + + + + Initializes a new instance of the class. + + The specified ViewComponent's Name + + + + The component's name + + + + + Sets the nested sections that this supports. + + The nested sections names, comma separated. + + + + Decorates a public property in a + to have the framework automatically bind the value using + the dictionary. + By default The property name is going to be used as a key to query the params. + + You can also use the + property to define that a property is non-optional. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + allowing you to override the parameter name to be queried on + the dictionary. + + Overrides the name of the parameter. + + + + Gets or sets a value indicating whether a value for this property is required. + + true if required; otherwise, false. + + + + Gets the name of the param. + + The name of the param. + + + + Represents the controller node configuration + + + + + Used by configurable elements + + + + + Deserializes the specified section. + + The section. + + + + Deserializes the specified section. + + The section. + + + + Gets or sets the assemblies. + + The assemblies. + + + + Gets or sets the custom controller factory. + + The custom controller factory. + + + + Represents a url mapping + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The URL. + The controller. + The action. + The area. + + + + Deserializes the specified section. + + The section. + + + + Gets the URL. + + The URL. + + + + Gets the controller. + + The controller. + + + + Gets the action. + + The action. + + + + Gets the area. + + The area. + + + + Represents a set of url mappings + + + + + Deserializes the specified section. + + The section. + + + + Represents a MonoRail extension configuration entry + + + + + Deserializes the specified section. + + The section. + + + + Gets or sets the type of the extension. + + The type of the extension. + + + + Gets or sets the extension node. + + The extension node. + + + + Represents a set of MonoRail extensions + + + + + Deserializes the specified section. + + The section. + + + + Gets the at the specified index. + + + + + + Represents the MonoRail external configuration + + + + + Initializes a new instance of the class. + + + + + Pendent + + + + + + Gets the config. + + + + + + Deserializes the specified node. + + The node. + + + + Gets the SMTP config. + + The SMTP config. + + + + Gets the view engine config. + + The view engine config. + + + + Gets the controllers config. + + The controllers config. + + + + Gets the view components config. + + The view components config. + + + + Gets the routing rules. + + The routing rules. + + + + Gets the extension entries. + + The extension entries. + + + + Gets the service entries. + + The service entries. + + + + Gets the custom filter factory. + + The custom filter factory. + + + + Gets the scaffold config. + + The scaffold config. + + + + Gets a value indicating whether MR should check for client connection. + + + true if it should check client is connected; otherwise, false. + + + + + Gets a value indicating whether to use windsor integration. + + + true if it should use windsor integration; otherwise, false. + + + + + Gets a value indicating whether match host name and path should be used on + MonoRail routing. + + + true if it should match host name and path; otherwise, false. + + + + + Gets a value indicating whether routing should exclude app path. + + true if exclude app path; otherwise, false. + + + + Gets the configuration section. + + The configuration section. + + + + Gets the default urls. + + The default urls. + + + + The MonoRail section handler + + + + + Initializes a new instance of the class. + + + + + Creates a configuration section handler. + + + Configuration context object. + + The created section handler object. + + + + Deserializes the config section. + + The section. + The config. + + + + Represents a url routing rule. + + + + + Initializes a new instance of the class. + + The regular expression pattern. + The replace. + + + + Gets the pattern. + + The pattern. + + + + Gets the replace. + + The replace. + + + + Gets the compiled rule. + + The compiled rule. + + + + Represents a set of url routing rules. + + + + + Deserializes the specified section. + + The section. + + + + Gets the at the specified index. + + + + + + Represents the Scaffolding support configuration. + + + + + + Deserializes the configuration section looking + for a 'scaffold' element with a 'type' attribute + + The section. + + + + Gets the scaffolding support implementation type. + + + The type of the scaffold impl. + + + + Enum for all known MonoRail services. + + + + + Custom ( not know service ) + + + + + The service + + + + + The service + + + + + The service. + + + + + The service. + + + + + The service. + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + The service + + + + + Represents a MonoRail service entry + + + + + Deserializes the specified section. + + The section. + + + + Gets the type of the service. + + The type of the service. + + + + Gets the service. + + The service. + + + + Gets the interface. + + The interface. + + + + Represents a set of MonoRail services entries + + + + + Initializes a new instance of the class. + + + + + Deserializes the specified section. + + The section. + + + + Registers the service. + + The id. + The service. + + + + Registers the service. + + The inter. + The service. + + + + Gets the service. + + The id. + + + + + Determines whether it has service. + + The id. + + true if the specified id has service; otherwise, false. + + + + + Gets the custom services. + + The custom services. + + + + Gets the service impl map. + + The service impl map. + + + + Represents the SMTP configuration + on the configuration file + + + + + Deserializes the specified smtp section. + + The smtp section. + + + + Gets or sets the smtp host. + + The host. + + + + Gets or sets the smtp port. + + The port. + + + + Gets or sets the smtp username. + + The username. + + + + Gets or sets the smtp password. + + The password. + + + + Hack to allow MR to work when the main assemblies are on + GAC. This method returns the complete name. + + + + + + + Represents the view components node configuration + + + + + Deserializes the specified section. + + The section. + + + + Gets or sets the assemblies. + + The assemblies. + + + + Gets or sets the custom view component factory. + + The custom view component factory. + + + + Represents the view engines configuration + + + + + Deserializes the specified section. + + The section. + + + + Configures the default view engine. + + + + + Gets or sets the view path root. + + The view path root. + + + + Gets the view engines. + + The view engines. + + + + Gets or sets the additional assembly sources. + + The sources. + + + + Buit in containing the files requireds by helpers and other + parts of MonoRail. + + + + + Implements the core functionality and exposes the + common methods for concrete controllers. + + + + + Holds the request/context information + + + + + The reference to the instance + + + + + Logger instance. Should never be null + + + + + Holds information to pass to the view + + + + + The area name which was used to access this controller + + + + + The controller name which was used to access this controller + + + + + The view name selected to be rendered after the execution + of the action + + + + + The layout name that the view engine should use + + + + + The original action requested + + + + + True if any Controller.Send operation was called. + + + + + The helper instances collected + + + + + The resources associated with this controller + + + + + Reference to the instance + + + + + Constructs a Controller + + + + + Specifies the view to be processed after the action has finished its processing. + + view template name (the file extension is optional) + + + + Specifies the view to be processed after the action has finished its processing. + + view template name (the file extension is optional) + If set to true, no layout will be used when rendering the view + + + + Specifies the view to be processed after the action has finished its processing. + + view template name (the file extension is optional) + If set to true, no layout will be used when rendering the view + The mime type to use on the reply + + + + Specifies the view to be processed after the action has finished its processing. + + Controller name get view from (if you intend to user another controller's view + view template name (the file extension is optional) + + + + Specifies the view to be processed after the action has finished its processing. + + Controller name get view from (if you intend to user another controller's view + view template name (the file extension is optional) + If set to true, no layout will be used when rendering the view + + + + Specifies the view to be processed after the action has finished its processing. + + Controller name get view from (if you intend to user another controller's view + view template name (the file extension is optional) + If set to true, no layout will be used when rendering the view + The mime type to use on the reply + + + + Specifies the view to be processed after the action has finished its processing. + + Controller name get view from (if you intend to user another controller's view + view template name (the file extension is optional) + The mime type to use on the reply + + + + Specifies the view to be processed and results are written to System.IO.TextWriter. + + + The name of the view to process. + + + + Specifies the shared view to be processed after the action has finished its + processing. (A partial view shared + by others views and usually in the root folder + of the view directory). + + + + + Specifies the shared view to be processed after the action has finished its + processing. (A partial view shared + by others views and usually in the root folder + of the view directory). + + + + + Specifies the shared view to be processed and results are written to System.IO.TextWriter. + (A partial view shared by others views and usually in the root folder + of the view directory). + + + The name of the view to process. + + + + Cancels the view processing. + + + + + Cancels the layout processing. + + + + + Cancels the view processing and writes + the specified contents to the browser + + + + + Cancels the view processing and writes + the specified contents to the browser + + + + + Cancels the view processing and writes + the specified contents to the browser + + + + + Sends raw contents to be rendered directly by the view engine. + It's up to the view engine just to apply the layout and nothing else. + + Contents to be rendered. + + + + Returns true if the specified template exists. + + + + + + Redirects to another action in the same controller. + + The action name + + + + Redirects to another action in the same controller. + + The action name + list of key/value pairs. Each string is supposed + to have the format "key=value" that will be converted to a proper + query string + + + + Redirects to another action in the same controller. + + The action name + Query string entries + + + + Redirects to another action in the same controller. + + The action name + Query string entries + + + + Redirects to the referrer action, according to the "HTTP_REFERER" header (Context.UrlReferrer). + + + + + Redirects to the referrer action, according to the "HTTP_REFERER" header (Context.UrlReferrer). + + + + + Redirects to the site root directory (Context.ApplicationPath + "/"). + + + + + Redirects to the specified URL. All other Redirects call this one. + + Target URL + + + + Redirects to the specified URL. + + Target URL + URL parameters + + + + Redirects to the specified URL. + + Target URL + URL parameters + + + + Redirects to another controller and action. + + Controller name + Action name + + + + Redirects to another controller and action. + + Area name + Controller name + Action name + + + + Redirects to another controller and action with the specified paramters. + + Controller name + Action name + Key/value pairings + + + + Redirects to another controller and action with the specified paramters. + + Area name + Controller name + Action name + Key/value pairings + + + + Redirects to another controller and action with the specified paramters. + + Controller name + Action name + Key/value pairings + + + + Redirects to another controller and action with the specified paramters. + + Area name + Controller name + Action name + Key/value pairings + + + + Creates a querystring string representation of the namevalue collection. + + The parameters. + + + + + Creates a querystring string representation of the entries in the dictionary. + + The parameters. + + + + + Extracts the services the controller uses from the context -- which ultimately + is a service provider. + + The context/service provider. + + + + Initializes the state of the controller. + + Name of the area. + Name of the controller. + Name of the action. + + + + Sets the evaluated action. + + Name of the action. + + + + Performs the specified action, which means: +
+ 1. Define the default view name
+ 2. Run the before filters
+ 3. Select the method related to the action name and invoke it
+ 4. On error, execute the rescues if available
+ 5. Run the after filters
+ 6. Invoke the view engine
+
+ Action name +
+ + + Performs the specified action with arguments. + + Action name + Action arguments + + + + Performs the specified action, which means: +
+ 1. Define the default view name
+ 2. Run the before filters
+ 3. Select the method related to the action name and invoke it
+ 4. On error, execute the rescues if available
+ 5. Run the after filters
+ 6. Invoke the view engine
+
+ Action name + Action arguments +
+ + + Gives a chance to subclasses to format the action name properly + + + Raw action name + Properly formatted action name + + + + To preserve standard Action semantics when using ASP.NET Views, + the event handlers in the CodeBehind typically call . + As a result, the property must be logically + cleared to allow the Action to behave as if it was called directly. + + + + + Pendent + + + + + + + + + + Pendent + + + + + + + Pendent + + + + + + + + Initializes this instance. Implementors + can use this method to perform initialization + + + + + Performs application-defined tasks associated + with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the default validator runner. + + The validator registry. + + + You can override this method to create a runner + with some different configuration + + + + + Invoked by the view engine to perform + any logic before the view is sent to the client. + + + + + + Invoked by the view engine to perform + any logic after the view had been sent to the client. + + + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + An instance of + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + If true, it will skip the layout + An instance of + + + + Attempts to deliver the Message using the server specified on the web.config. + + The instance of System.Web.Mail.MailMessage that will be sent + + + + Renders and delivers the e-mail message. + + + + + + + Gets the view folder -- (areaname + + controllername) or just controller name -- that this controller + will use by default. + + + + + This is intended to be used by MonoRail infrastructure. + + + + + Gets the actions available in this controller. + + It is supposed to be used by MonoRail infrastructure only + The actions. + + + + Gets a dicitionary of name/ + + It is supposed to be used by MonoRail infrastructure only + The resources. + + + + Gets a dictionary of name/helper instance + + The helpers. + + + + Gets a value indicating whether the request is a post. + + + if this request is a post; otherwise, . + + + + + Gets a value indicating whether the request is a get. + + + if this request is a get; otherwise, . + + + + + Gets a value indicating whether the request is a put. + + + if this request is a put; otherwise, . + + + + + Gets a value indicating whether the request is a head. + + + if this request is a head; otherwise, . + + + + + Gets the controller's name. + + + + + Gets the controller's area name. + + + + + Gets or set the layout being used. + + + + + Gets the name of the action being processed. + + + + + Logger for the controller + + + + + Gets or sets the view which will be rendered by this action. + + + + + Gets the property bag, which is used + to pass variables to the view. + + + + + Gets the context of this request execution. + + + + + Gets the Session dictionary. + + + + + Gets a dictionary of volative items. + Ideal for showing success and failures messages. + + + + + Gets the web context of ASP.NET API. + + + + + Gets the request object. + + + + + Gets the response object. + + + + + Shortcut to + + + + + Shortcut to + + + + + Shortcut to + + + + + Gets the dynamic actions dictionary. + + Can be used to insert dynamic actions on the controller instance. + + + The dynamic actions dictionary. + + + + Gets the validator runner instance. + + The validator instance. + + + + Gets the URL builder instance. + + The URL builder. + + + + Shortcut to + + + + + + Indicates that the current Action resulted from an ASP.NET PostBack. + As a result, this property is only relavent to controllers using + WebForms views. It is placed on the base Controller for convenience + only to avoid the need to extend the Controller or provide additional + helper classes. It is marked virtual to better support testing. + + + + + Gets the service provider. + + The service provider. + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Script used by . + + + + + Install the zebda validation script + + + + + Script used by . + + + + + Provides a basic implementation of + + + + + Represents a processor of an exception. + The processor might choose to register the exception + in some specific way and then delegate the execution + to the next handler + + + + + + Implementors should perform any required + initialization + + + + + Implementors should perform the action + on the exception. Note that the exception + is available in + + + + + + The next exception in the sink + or null if none exists. + + + + + Implementors should perform any required + initialization + + + + + Implementors should perform the action + on the exception. Note that the exception + is available in + + + + + + Invokes the next handler. + + The context. + + + + Builds the standard message. + + The context. + + + + + The next exception in the sink + or null if none exists. + + + + + + A handle that sends the exception by email + + + + + Extends providing + an method + that is invoked by the framework. + + + + + Implementors should check for known attributes and child nodes + within the exceptionHandlerNode + + The Xml node + that represents this handler on the configuration file + + + + Implementors should check for known attributes and child nodes + within the exceptionHandlerNode + + The Xml node + that represents this handler on the configuration file + + + + Implementors should perform the action + on the exception. Note that the exception + is available in + + + + + + This extension allow one to perform one or more steps + in response to an exception threw by an action. + + + + + + + To successfully install this extension you must register + it on the extensions node and the handlers within the exception node: + + <monorail> + <extensions> + <extension type="Castle.MonoRail.Framework.Extensions.ExceptionChaining.ExceptionChainingExtension, Castle.MonoRail.Framework" /> + </extensions> + + <exception> + <exceptionHandler type="Type name that implements IExceptionHandler" /> + <exceptionHandler type="Type name that implements IExceptionHandler" /> + </exception> + </monorail> + + + Controllers can request IExceptionProcessor through IServiceProvider + and invoke the handlers to process an exception + + + (); + exProcessor.ProcessException(ex); + + RenderView("CouldNotBuyMercedes"); + } + } + ]]> + + + + + + Contract for extensions that want to hook + on MonoRail's events + + + Extensions implementations must be thread safe and stateless. + + + + + Gives to the extension implementor a chance to read + attributes and child nodes of the extension node + + The node that defines the MonoRail extension + + + + Provides an interface to the ExceptionChaingingExtension + for manual triggering + + + + + Initiates the ExceptionChainingExtension manualy + + The exception to process + + + + Gives to the extension implementor a chance to read + attributes and child nodes of the extension node + + The node that defines the MonoRail extension + + + + Services the specified provider. + + The provider. + + + + Initiates the ExceptionChainingExtension manualy + + The exception to process + + + + Called when an exception happens. + + The context. + + + + Installs the exception handler. + + The node. + Name of the type. + + + + This class expects to be configured with exclude types that detail the types of + exceptions to be ignored. + + + + + + + + + Implementors should check for known attributes and child nodes + within the exceptionHandlerNode + + The Xml node + that represents this handler on the configuration file + + + + Implementors should perform the action + on the exception. Note that the exception + is available in + + + + + + Handles that logs the exception using the the logger factory. + + + + + Implementors should perform the action + on the exception. Note that the exception + is available in + + + + + + This extension allow one to provide a custom + implementation of the session available on + + + To successfully install this extension you must add the attribute customSession + to the monoRail configuration node and register the extension on the extensions node. + + <monoRail customSession="Type name that implements ICustomSessionFactory"> + <extensions> + <extension type="Castle.MonoRail.Framework.Extensions.Session.CustomSessionExtension, Castle.MonoRail.Framework" /> + </extensions> + </monoRail> + + + + + + Reference to an instance of + obtained from the configuration + + + + + Gives to the extension implementor a chance to read + attributes and child nodes of the extension node + + The node that defines the MonoRail extension + + + + Services the specified provider. + + The provider. + + + + Reads the attribute customSession + from and + instantiate it based on the type name provided. + + + If the typename was not provided or the type + could not be instantiated/found + + The Extension Manager + The configuration + + + + Overrides the ISession instance on . + + + Note that the session available through IHttpContext is left untouched + + + + + Retrives the ISession instance from . + and invokes + + + + + Contract used by + to obtain the session implementation provided by the programmer + + + + + Should identify the session using the context (usually a cookie is used + for that) + + + + + + + Should persist the session state associated with the context (again, a cookie + is the standard approach to identify the session) + + + + + + + + + + + + + MonoRail's extension manager. + It fires events related to MonoRail that can be used to add additional behaviour. + + + + + Initializes a new instance of the class. + + The service container. + + + + Gets the service container. + + The service container. + + + + Occurs when a context is created. + + + + + Occurs when a context is disposed. + + + + + Occurs when an action throws an exception. + + + + + Occurs when an unhandled exception is thrown. + + + + + Occurs when a session is adquired. + + + + + Occurs when a session is released. + + + + + Occurs before pre process a handler. + + + + + Occurs after process a handler. + + + + + Occurs when a request needs to authenticate. + + + + + Occurs when a request needs to be authorized. + + + + + Occurs upon request cache resolval. + + + + + Occurs when a cache need to be updated. + + + + + Pendent + + + + + Dictates the contract for filters. Implementors + should use filter to perform any logic before and/or + after the action invocation. + + + + + Implementors should perform they filter logic and + return true if the action should be processed. + + When this filter is being invoked + Current context + The controller instance + true if the action + should be invoked, otherwise false + + + + Implementors should perform they filter logic and + return true if the action should be processed. + + When this filter is being invoked + Current context + The controller instance + + true if the action + should be invoked, otherwise false + + + + + Enum to identify where a value is stored. + + + + + Value is stored in the Session object. + + + + + Value is stored in a cookie object. + + + + + Value is stored in the querystring. + + + + + Value is stored in the form collection. + + + + + Value is stored in either query string or form collection. + + + + + The LocalizationFilter can be used to determine the culture to use + for resources and UI. + + + + + Dictates a contract that the defining + FilterAttribute can be set + + + + + Sets the filter. + + The filter. + + + + Executes a sequence of steps to determine the browser location/culture. + + When this filter is being invoked + Current context + The controller instance + + true if the action should be invoked, otherwise false + + + + + Gets the user language. + + The request. + + + + + Gets the locale id. + + The context. + + + + + Sets the filter. + + The filter. + + + + Persist entire flash content after an action execution on the controller. + + + + + + Implementors should perform they filter logic and + return true if the action should be processed. + + When this filter is being invoked + Current context + The controller instance + + true if the action + should be invoked, otherwise false + + + + + Forces ASP.Net to perform a more complete request validation + + + + + Initializes a new instance of the class. + + + + + + + When this filter is being invoked + Current context + The controller instance + + true if the action + should be invoked, otherwise false + + + + + Implementation of a browser validator that uses the fValidate + javascript library. + + + + + Abstracts the approach to create javascript + validation for forms. + + + + + Implementors should attempt to read their specific configuration + from the , configure and return + a class that extends from + + An instance that extends from + + + + Implementors should return their generator instance. + + A generator instance + + + + Implementors should attempt to read their specific configuration + from the , configure and return + a class that extends from + + + + An instance that extends from + + + + + Implementors should return their generator instance. + + + + + A generator instance + + + + Supported configuration for fValidate. + + + + + Configures the JS library based on the supplied parameters. + + The parameters. + + + + Generator for fValidate validation. + + + + + Initializes a new instance of the class. + + Type of the input. + The attributes. + + + + Sets that a field is required. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field value must match the specified regular expression. + + The target name (ie, a hint about the controller being validated) + The reg exp. + The violation message. + + + + Sets that a field value must be a valid email address. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept digits. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept numbers. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + The violation message. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The violation message. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + The violation message. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Set that a field value must be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must _not_ be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must be a valid date. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Adds the validator. + + The target. + The validator. + + + + Implements support for really easy field validation + http://tetlaw.id.au/view/javascript/really-easy-field-validation + + + + + Implementors should attempt to read their specific configuration + from the , configure and return + a class that extends from + + + + An instance that extends from + + + + + Implementors should return their generator instance. + + + + + A generator instance + + + + Configuration for the Prototype Field Validation + + + + + Implementors should return any tag/js content + to be rendered after the form tag is closed. + + The form id. + + + + + Configures the JS library based on the supplied parameters. + + The parameters. + + + + Adds a custom rule. + + Name of the class. + The violation message. + The rule. + + + + Generator for prototype field validation + + + + + Initializes a new instance of the class. + + Validation configuration instance + Type of the input. + The attributes. + + + + Sets that a field is required. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept digits. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept numbers. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field value must be a valid email address. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field value must match the specified regular expression. + + The target name (ie, a hint about the controller being validated) + The reg exp. + The violation message. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + The violation message. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The violation message. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + The violation message. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Set that a field value must be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must _not_ be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must be a valid date. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Provides an interface for the Zebda client side JS validator + http://labs.cavorite.com/zebda + + + + + Read the configuration + + + + + + Pendent + + + + + + Configuration for the Zebda validation + + + + + Render the validation init script + + + + + + + read the validator configuration values + + + + + + The generator for the Zebda JS validator + + + + + Initializes a new instance of the class. + + Type of the input. + The attributes. + + + + Set that a field should only accept digits. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Set that a field should only accept numbers. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field is required. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that a field value must match the specified regular expression. + + The target name (ie, a hint about the controller being validated) + The reg exp. + The violation message. + + + + Sets that a field value must be a valid email address. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + + + + Sets that field must have an exact lenght. + + The target name (ie, a hint about the controller being validated) + The length. + The violation message. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + + + + Sets that field must have an minimum lenght. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The violation message. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + + + + Sets that field must have an maximum lenght. + + The target name (ie, a hint about the controller being validated) + The maximum length. + The violation message. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + + + + Sets that field must be between a length range. + + The target name (ie, a hint about the controller being validated) + The minimum length. + The maximum length. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Sets that field must be between a value range. + + The target name (ie, a hint about the controller being validated) + Minimum value. + Maximum value. + The violation message. + + + + Set that a field value must be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must _not_ be the same as another field's value. + + The target name (ie, a hint about the controller being validated) + The name of the field to compare with. + The violation message. + + + + Set that a field value must be a valid date. + + The target name (ie, a hint about the controller being validated) + The violation message. + + + + Optional base class for helpers. + Extend from this class only if your helpers needs + a reference to the controller which is using it or + if you need to use one of the protected utility methods. + + + + + Implemented by the view or helpers, if they desire + to have access to the controller instance. + + + + + Sets the controller. + + The controller. + + + + Store's for the current view. + + + + + Sets the controller. + + Current view's . + + + + Merges with placing results in + . + + The user options. + The default options. + + All and in + are copied to . Entries with the same in + and are skipped. + + + + + Renders the a script block with a src attribute + pointing to the url. The url must not have an extension. + + For example, suppose you invoke it like: + + RenderScriptBlockToSource("/my/url/to/my/scripts"); + + + + That will render + + ]]> + + As you see the file extension will be inferred + + + The url for the scripts (should start with a '/') + An script block pointing to the given url. + + + + Renders the a script block with a src attribute + pointing to the url sending the querystring as parameter. The url must not have an extension. + + For example, suppose you invoke it like: + + RenderScriptBlockToSource("/my/url/to/my/scripts", "locale=pt-br"); + + + + That will render + + ]]> + + As you see the file extension will be inferred + + + The url for the scripts (should start with a '/') + The query string. + An script block pointing to the given url. + + + + Generates HTML element attributes string from . + key1="value1" key2 + + The attributes for the element. + to use inside HTML element's tag. + + is returned if is null or empty. + + If for some is null or + only attribute name is appended to the string. + + + + + + Builds a query string encoded. + + + Supports multi-value query strings, using any + as a value. + + + IDictionary dict = new Hashtable(); + dict.Add("id", 5); + dict.Add("selectedItem", new int[] { 2, 4, 99 }); + string querystring = BuildQueryString(dict); + // should result in: "id=5&selectedItem=2&selectedItem=4&selectedItem=99&" + + + + The parameters + + + + Concat two string in a query string format (key=value&key2=value2) + building a third string with the result + + key values + key values + The concatenation result + + + + HTML encodes a string and returns the encoded string. + + The text string to HTML encode. + The HTML encoded text. + + + + Escapes a content replacing line breaks with html break lines. + + The text to escape. + The URL encoded and JavaScript escaped text. + + + + URL encodes a string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + URL encodes the path portion of a URL string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + Escapes JavaScript with Url encoding and returns the encoded string. + + + Converts quotes, single quotes and CR/LFs to their representation as an escape character. + + The text to URL encode and escape JavaScript within. + The URL encoded and JavaScript escaped text. + + + + Builds a JS associative array based on the specified dictionary instance. + + For example: {name: value, other: 'another'} + + + The js options. + An associative array in javascript + + + + Generates script block. + + <script type=\"text/javascript\"> + scriptContents + </script> + + + The script contents. + placed inside script tags. + + + + Quotes the specified string with double quotes + + The content. + A quoted string + + + + Quotes the specified string with singdoublele quotes + + Items to quote + A quoted string + + + + Quotes the specified string with double quotes + + The content. + A quoted string + + + + Gets the controller. + + The used with the current view. + + + + Gets or sets the server utility. + + The server utility. + + + + Gets the URL helper instance. + + The URL helper. + + + + Gets the current context. + + The current context. + + + + XmlHttpRequest supported events. + + + + + Not initialized + + + + + Called when the remote document is being + loaded with data by the browser. + + + + + Called when the browser has finished loading + the remote document. + + + + + Called when the user can interact with the + remote document, even though it has not + finished loading. + + + + + Called when the XMLHttpRequest has completed. + + + + + Called when the request was successfully (Status code < 500) + + + + + Called when the request was not successfully (Status code >= 500) + + + + + MonoRail Helper that delivers AJAX capabilities. + + + The following libraries are exposed: + + Prototype + Simplify ajax programming, among other goodies + + Behaviour + Uses css selectors to bind javascript code to DOM elements + + + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Renders a Javascript library inside a single script tag. + + + + + Renders a Javascript library inside a single script tag. + + + + + Generates an AJAX JavaScript proxy for the current controller. + + Name of the javascript proxy object + + + + Generates an AJAX JavaScript proxy for a given controller. + + Name of the javascript proxy object + Controller which will be target of the proxy + + + + Generates an AJAX JavaScript proxy for a given controller. + + Name of the javascript proxy object + Controller which will be target of the proxy + area which the controller belongs to + + + + Returns a link that will trigger a javascript function using the + onclick handler and return false after the fact. + + <a href="javascript:void(0);" onclick="functionCodeOrName; return false">innerContent</a> + + + Link content + Function definition + Attributes to be applied to the html element + + + + + Returns a link that will trigger a javascript function using the + onclick handler and return false after the fact. + + <a href="javascript:void(0);" onclick="confirm('question') { functionCodeOrName}; return false">innerContent</a> + + + Link content + Function definition + Confirm question + Attributes to be applied to the html element + + + + + Returns a link that will trigger a javascript function using the + onclick handler and return false after the fact. + + Link content + Function definition + + + + + Returns a link that will trigger a javascript function using the + onclick handler and return false after the fact. + + Link content + Function definition + Confirm question + + + + + Returns a button that will trigger a javascript function using the + onclick handler and return false after the fact. + + Button legend + Function definition or name + Attributes to be applied to the input html element + + + + + Returns a button that will trigger a javascript function using the + onclick handler and return false after the fact. + + Button legend + Function definition or name + + + + + Creates a button that if clicked will fire an Ajax invocation. + + Button legend + The URL of the Ajax action + the options for the Ajax invocation + The handcrafted input + + + + Creates a button that if clicked will fire an Ajax invocation. + + Button legend + the target url + the options for the Ajax invocation + Attributes to be applied to the html element + The handcrafted input + + + + Returns a link to a remote action defined by options["url"] + that is called in the background using + XMLHttpRequest. The result of that request can then be inserted into a + DOM object whose id can be specified with options["update"]. + Usually, the result would be a partial prepared by the controller + + Link content + Target url + the options for the Ajax invocation + The handcrafted element + + + + Returns a link to a remote action defined by options["url"] + that is called in the background using + XMLHttpRequest. The result of that request can then be inserted into a + DOM object whose id can be specified with options["update"]. + Usually, the result would be a partial prepared by the controller + + Link content + the confirm question + Target url + the options for the Ajax invocation + The handcrafted element + + + + Returns a link to a remote action defined by options["url"] + that is called in the background using + XMLHttpRequest. The result of that request can then be inserted into a + DOM object whose id can be specified with options["update"]. + Usually, the result would be a partial prepared by the controller + + Link content + Target url + the options for the Ajax invocation + Attributes to be applied to the html element + The handcrafted element + + + + Returns a form tag that will submit using XMLHttpRequest + in the background instead of the regular + reloading POST arrangement. Even though it is + using Javascript to serialize the form elements, the form submission + will work just like a regular submission as viewed by the + receiving side (all elements available). + + Target url + the options for the Ajax invocation + The handcrafted element + + + + Returns a form tag that will submit using XMLHttpRequest + in the background instead of the regular + reloading POST arrangement. Even though it is + using Javascript to serialize the form elements, the form submission + will work just like a regular submission as viewed by the + receiving side (all elements available). + + the options for the Ajax invocation + The handcrafted element + + + + Observes the field with the DOM ID specified by fieldId and makes + an Ajax when its contents have changed. + + Form field to be observed + The frequency (in seconds) at which changes to + this field will be detected. (required) + url for the action to call + when the field has changed (required) + Specifies the DOM ID of the element whose + innerHTML should be updated with the + XMLHttpRequest response text. + A Javascript expression specifying the + parameters for the XMLHttpRequest. This defaults + to 'value', which in the evaluated context + refers to the new field value. + javascript that activates the observer + + + + Observes the field with the DOM ID specified by fieldId and makes + an Ajax when its contents have changed. + + Form field to be observed + The frequency (in seconds) at which changes to + this field will be detected. (required) + url for the action to call + when the field has changed (required) + the options for the Ajax invocation + javascript that activates the observer + + + + Observes the field with the DOM ID specified by field and makes + an Ajax call when its contents changes. + + The following entries must exist in the dictionary: + + + + field + The DOM field to be observed + + + url + url to to call when the field has changed + + + frequency + The frequency (in seconds) at which changes to this field will be detected + + + + The following are optional entries: + + + + update + Specifies the DOM ID of the element whose + innerHTML should be updated with the + XMLHttpRequest response text + + + with + A Javascript expression specifying the parameters + for the XMLHttpRequest. This defaults to 'value', which in the + evaluated context refers to the new field value + + + + the options for the Ajax invocation + javascript that activates the observer + + + + Like , but operates on an entire form identified by the + DOM ID formId. options are the same as , except + the default value of the :with option evaluates to the + serialized (request String) value of the form. + Works like the , but operates on an entire form identified by the + DOM ID formId. Options are the same as , except + the default value of the with option evaluates to the + serialized (request String) value of the entire form. + + Form to be observed + The frequency (in seconds) at which changes to + this field will be detected. (required) + url for the action to call + when the field has changed (required) + Specifies the DOM ID of the element whose + innerHTML should be updated with the + XMLHttpRequest response text. + A Javascript expression specifying the + parameters for the XMLHttpRequest. This defaults + to 'value', which in the evaluated context + refers to the new field value. + javascript that activates the observer + + + + Like , but operates on an entire form identified by the + DOM ID formId. options are the same as , except + the default value of the with option evaluates to the + serialized (request String) value of the entire form. + + Form to be observed + the options for the Ajax invocation + javascript that activates the observer + + + + Observes all elements within a form with the DOM + ID specified by form and makes + an Ajax call when its contents changes. + + The following entries must exist in the dictionary: + + + + form + The form element id + + + url + url to to call when the field has changed + + + frequency + The frequency (in seconds) at which changes to this field will be detected + + + + The following are optional entries: + + + + update + Specifies the DOM ID of the element whose + innerHTML should be updated with the + XMLHttpRequest response text + + + with + A Javascript expression specifying the parameters + for the XMLHttpRequest. This defaults to 'value', which in the + evaluated context refers to the new field value + + + + the options for the Ajax invocation + javascript that activates the observer + + + + Periodically invokes the specified url. You can use the options to + override the default frequency (defaults to 10 seconds). + + the options for the Ajax invocation + javascript that activates the timer + + + + Periodically invokes the specified url. You can use the options to + override the default frequency (defaults to 10 seconds). + + the options for the Ajax invocation + url to be invoked periodically + javascript that activates the timer + + + + Rendes a input field with Google style autocomplete enabled. + The specified url is used to gather the contents + for the auto complete panel, so + and your action should return filtered and sorted results. + + The following entries must exist in the options: + + + + input + The text input element id + + + url + url to to call when the field has changed + + + + + it is assumed that the url invoked returns an unordered list. + + the options for the Ajax invocation + attributes for the input html element + javascript that activates the timer + + + + Rendes a input field with Google style autocomplete enabled. + The specified url is used to gather the contents for the auto complete panel, so + and your action should return filtered and sorted results. + + + + it is assumed that the url invoked returns an unordered list. + + input element id + url used to gather results + attributes for the input element + options for the autocomplete + + + + + Generates an javascript block enabling + auto completion for the specified input text id (elementId). + You can specify the element to be updated using the options + dictionary (key update), if you don't we assume + elementId+autocomplete. + + + it is assumed that the url invoked returns an unordered list. + + The element id (input type=text) + The url to be invoked returning results + the options for the Ajax invocation + + + + + Returns a function that makes a remote invocation, + using the supplied parameters + + Target url + the options for the Ajax invocation + javascript code + + + + Returns a function that makes a remote invocation, + using the supplied parameters + + the options for the Ajax invocation + javascript code + + + + Populates the by analyzing the + options set on the helper + + + + The following options are analyzed + + + + type + boolean - sets the asynchronous + + + method + string - sets the method. Possible values are post/get + + + evalScripts + boolean + + + position + string - sets the place where content is inserted (Top, Bottom, After, Before) + + + form + if present, set the parameters request to send the current form serialized + + + with + if present, set its content as the parameters for the ajax request + + + + + + Options that will be used on the js side + Options passed to the helper method + + + + + Builds the callback function. + + The callback. + The code. + The name. + + + + + Builds the observer. + + The clazz. + The name. + The options. + + + + + Gets the options. + + The URL. + The options. + + + + + Gets the options. + + The URL. + The id of element to be updated. + The with. + The loading. + The loaded. + The complete. + The interactive. + + + + + Exposes the functionality available on the Behaviour js library + which Uses css selectors to bind javascript code to DOM elements + + + Before using it, you must install the scripts. See + + + + + Renders a script tag refering the Behaviour library code. + + + + + + Renders a script block invoking Behaviour.apply() + + + + + Renders a script block invoking Behaviour.addLoadEvent(loadFunctionName); + + The name of the js function to be invoked when the body is loaded + + + + Renders a script block starting the association of events to selector rules + + + + + + + Adds a entry to a registration array. Invoking it + with #form, onsubmit and validate will produce + '#form' : function(e){ e.onsubmit = validate; }, + + + + The css selector rule + The name of the event on the element + The function to be invoked in response to the event + + + + Renders the end of a script block that associated events to selector rules + + + + + + + Simple helper for date formatting + + + + + Alternative representation of a difference + between the specified date and now. If within 24hr + it returns Today. If within 48hr it returns + Yesterday. If within 40 days it returns + x days ago and otherwise it returns + x months ago + + TODO: Think about i18n + + + The date in the past (should be equal or less than now) + + + + + Returns the difference from the + specified date the the current date + in a friendly string like "1 day ago" + + TODO: Think about i18n + + + The date in the past (should be equal or less than now) + + + + + Formats to short date + + + Short date, or String.Empty if is null. + + + + Formats to short date + + + Short date and time, or String.Empty if is null. + + + + Helper used to create instances + + + + + Creates an with entries + infered from the arguments. + + CreateDict( "style=display: none;", "selected" ) + + + + + + + + Creates a dictionary from specified arguments. + + The arguments. + + + + + Creates a dictionary fros a name value collection. + + The collection. + + + + + Exposes the effect script from Thomas Fuchs + (http://script.aculo.us, http://mir.aculo.us) + + + Before using it, you must install the scripts. See + + + + + Exposes the effect script from Thomas Fuchs + (http://script.aculo.us, http://mir.aculo.us) + + + Before using it, you must install the scripts. + See + + + + + Renders a Javascript library inside a single script tag. + + + + + + Gets the javascript functions. + + + + + + Generates a JS snippet invoking the specified effect. + Examples: + + VisualEffect('ToggleSlide', 'elementid') + VisualEffect('ToggleBlind', 'elementid') + VisualEffect('ToggleAppear', 'elementid') + VisualEffect('Highlight', 'elementid') + VisualEffect('Fade', 'elementid') + VisualEffect('Shake', 'elementid') + VisualEffect('DropOut', 'elementid') + + + + The effect name. + The element id to act upon. + A JS snippet + + + + Generates a JS snippet invoking the specified effect. + Examples: + + VisualEffect('ToggleSlide', 'elementid') + VisualEffect('ToggleBlind', 'elementid') + VisualEffect('ToggleAppear', 'elementid') + VisualEffect('Highlight', 'elementid') + VisualEffect('Fade', 'elementid') + VisualEffect('Shake', 'elementid') + VisualEffect('DropOut', 'elementid') + + + + Common options includes duration, + transition, fps, sync, + from, to, delay, queue, + startcolor, endcolor. + + + Callbacks: + beforeStart, beforeUpdate, afterUpdate, afterFinish + + + + If you want to use the DropOut effect, please refer to + + The effect name. + The element id to act upon. + A dictionary used to specify options to the effect behavior + A JS snippet + + + + Generates a JS snippet invoking the DropOut effect + Examples: + + VisualEffectDropOut('elementid', {position:'end', scope='test', limit=2}) + + + + The element id to act upon. + A dictionary used to specify options to the DropOut behavior + A JS snippet + + + + Make an element appear. If the element was previously set to display:none; + inside the style attribute of the element, the effect will automatically + show the element. + + + Microsoft Internet Explorer can only set opacity on elements that have a + 'layout'. To let an element have a layout, you must set some CSS + positional properties, like 'width' or 'height'. + + + + + + + Makes an element fade away and takes it out of the document flow + at the end of the effect by setting the CSS display property to false. + + + Works safely with most HTML block elements (like DIV and LI). + Microsoft Internet Explorer can only set opacity on elements that + have a 'layout'. To let an element have a layout, you must set some + CSS positional properties, like 'width' or 'height'. + + + + + + + Gives the illusion of the element puffing away (like a in a cloud of smoke). + + + Works safely with most HTML block elements (like DIV and LI). + + + + + + + Makes the element drop and fade out at the same time. + + + Works safely with most HTML block elements (like DIV and LI). + + + + + + + Moves the element slightly to the left, then to the right, repeatedly. + + + Works safely with most HTML block elements (like DIV and LI). + + + + + + + Gives the illusion of a TV-style switch off. + + + Works safely with most HTML block elements (like DIV and LI). + + + + + + + This pair of effects simulates a window blind, where the + contents of the affected elements stay in place. + + + Works safely with most HTML block elements (like DIV and LI), + except table rows, table bodies and table heads. + + + + + + + This pair of effects simulates a window blind, where the + contents of the affected elements stay in place. + + + Works safely with most HTML block elements (like DIV and LI), + except table rows, table bodies and table heads. + + + + + + + This pair of effects simulates a window blind, where the contents of + the affected elements scroll up and down accordingly. + + + You must include a second DIV element, + wrapping the contents of the outer DIV. + So, if you call new Effect.SlideDown('x'), your element must look like this: + + <div id="x"><div>contents</div></div> + + Because of a bug in Internet Explorer 6 (overflow not correctly hidden), + an additional wrapper div is needed if you want to use these effects on + absolutely positionend elements (wrapper is the absolutely positioned element, + x has position:relative; set; ): + + <div id="wrapper"> + <div id="x"><div>contents</div></div> + </div> + + Works only on block elements. + + + + + + + This pair of effects simulates a window blind, where the contents of + the affected elements scroll up and down accordingly. + + + You must include a second DIV element, + wrapping the contents of the outer DIV. + So, if you call new Effect.SlideDown('x'), your element must look like this: + + <div id="x"><div>contents</div></div> + + Because of a bug in Internet Explorer 6 (overflow not correctly hidden), + an additional wrapper div is needed if you want to use these effects on + absolutely positionend elements (wrapper is the absolutely positioned element, + x has position:relative; set; ): + + <div id="wrapper"> + <div id="x"><div>contents</div></div> + </div> + + Works only on block elements. + + + + + + + Just apply the CSS class "fade" to any element and it will fade from yellow + to its background color or white if none is specified. + + Key Features
+ + * Fade an infinite number of elements.
+ + * No inline JavaScript. Simply give an element a class of "fade", the script does the rest "automagically".
+ + * Background color aware. FAT will do better than simply fade to white if the element (or it's parents) have a + CSS background color, it will fade to that background color instead.
+ + * Fade from any color. For example, if you wanted a list of error messages + to fade out from red you would simply give the list a class of "fade-FF0000".
+ + * Super smooth fading. By default, elements will fade at 30 frames per second + (the same rate as a television) over 3 seconds. You can adjust this to any + framerate and any duration. You could easily fade elements at 60 frames + per second over 4, 5, 10 seconds!
+
+
+ + NOTE: All elements to be faded must have an id tag! + BASIC USE:

Watch me fade

+ ADVANCED USE: Change the default fade from color: +

Watch me fade from Blue (#0066FF)

+ SEE MORE HERE: http://www.axentric.com/posts/default/7 +
+
+ + + Renders a Javascript library inside a single script tag. + + + + + + Renders a Javascript library inside a single script tag. + + + + + + Represents all scopes that the + uses to search for root values + + + + + All scopes should be searched + + + + + Only PropertyBag should be searched + + + + + Only Flash should be searched + + + + + Only Session should be searched + + + + + Only Request should be searched + + + + + Only Params should be searched + + + + + The FormHelper allows you to output html input elements using the + conventions necessary to use the DataBinder on the server side. Ultimately it + allows you do to a bi-directional binding -- if used properly. + + + + + + + Using simple values: + On the controller: + + + public void MyAction() + { + PropertyBag["name"] = "John Doe"; + } + + + On the view (using NVelocity syntax) + + + $Form.TextField('name') // Renders an input text with value "John Doe" + + + + Using complex objects: + + + + public void MyAction() + { + PropertyBag["user"] = new User("John Doe"); + } + + + On the view (using NVelocity syntax) + + + $Form.TextField('user.name') // Renders an input text with value "John Doe" + + + + + Elements generation
+ + + + Buttons + +
+
+ +
+
+ + + Select + + + + + + + Text area + + + + + + + Hidden field + + + + + + + Checkbox field + +
+ +
+
+ + + Radio field + + + + + + + File upload + + + + + + + Text field + +
+
+
+ +
+
+ + + Password field + +
+ +
+
+ + + Labels + +
+ +
+
+ +
+
+ + + FormValidation
+ The following operations are related to the Form Validation support: +
+ + + and + Opens/close the form tag. They are required to use the form validation + + + + Disables validation altogether + + + + Sets a custom Browser validator provider + + + + Configures the helper to use the prototype easy field validation. Must be invoked before FormTag + + + + Configures the helper to use the fValidate. Deprecated. + + + + Configures the helper to use the Zebda. Must be invoked before FormTag + + + + + Mask support.
+ For most elements, you can use + the entries mask and optionally mask_separator to define a + mask for your inputs. Kudos to mordechai Sandhaus - 52action.com +
+ + + For example: mask='2,5',mask_separator='/' will mask the content to '12/34/1234' + +
+
+ + + Common property flags for reflection + + + + + Common property flags for reflection (with declared only) + + + + + Common field flags for reflection + + + + + Logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Renders a Javascript library inside a single script tag. + + + + + + Creates a form tag based on the parameters. + + Javascript validation can also be bound to + the form and|or elements nested as long as the helper is + able to reach the of the object used on your view code + + + The action attribute generation will use + + + + + + + + + $Form.FormTag("%{action='Save',id='productform'}") + + + Outputs: + + + <form method='post' action='/[appdir]/[controller]/Save.[extension]' id='productform'> + + + + + + The parameters are used to build a url and also to form the tag. For notes on the url + see . The other parameters supported + follows + + + + noaction + boolean. Disables the generation of an action + + + method + string. The http method to use. Defaults to post + + + id + string. The form id. + + + + More parameters can be accepted depending on the form validation strategy you are using (if any). + + + + The parameters for the tag or for action and form validation generation. + + + + + Creates a form tag based on the parameters. + + Javascript validation can also be bound to + the form and|or elements nested as long as the helper is + able to reach the of the object used on your view code + + + The action attribute generation will use + + + + + + + $Form.FormTag('mytarget.castle', "%{id='productform'}") + + + Outputs: + + + <form method='post' action='mytarget.castle' id='productform'> + + + + + + The following parameters are accepted. + + + + method + string. The http method to use. Defaults to post + + + id + string. The form id. + + + + More parameters can be accepted depending on the form validation strategy you are using (if any). + + + + The hardcoded url. + The parameters for the tag or for action and form validation generation. + + + + + Generate Ajax form tag for ajax based form submission. Experimental. + + + + + + + Renders an end form element. + + + Should be used if you are using form validation. Some validation approaches + uses the end form before or after appending a javascript snippet. + + + + + + Pushes the specified target. Experimental. + + The target. + + + + Pushes the specified target. Experimental. + + The target. + The parameters. + + + + Pops this instance. Experimental. + + + + + Generates an input submit element. + + The value/caption for the button. + The element tag + + + + Generates an input submit element. + + The value/caption for the button. + Attributes for the FormHelper method and for the html element it generates + The element tag + + + + Generates an input button element. + + The value. + The element tag + + + + Generates an input button element. + + The value. + Attributes for the FormHelper method and for the html element it generates + The element tag + + + + Creates a basic button element of type submit. + + The inner text of the button element. + The generated button element. + + + + Creates a basic button element of the specified type. + + The inner text of the button element. + The type of the button. + The generated button element. + + + + Creates a basic button element of the specified type and with specified attributes. + + The inner text of the button element. + The type of the button. + Attributes for the FormHelper method and for the html element it generates + The generated button element. + + + + Generates an input text form element + with the supplied value + + The string to be used to create the element name. + Value to supply to the element (instead of querying the target) + The generated form element + + + + Generates an input text form element + with the supplied value + + The string to be used to create the element name. + Value to supply to the element (instead of querying the target) + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates an input text element. + + The value is extracted from the target (if available) + + + + + The following example assumes that an entry username exists on the + or or + + + $Form.TextField('username') + + Outputs: + + <input type='text' name='username' id='username' value='John Doe' /> + + + + The following example assumes that an entry user exists on the + or or + + + + $Form.TextField('user.name') + + Outputs: + + <input type='text' name='user.name' id='user_name' value='John Doe' /> + + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates an input text element. + + The value is extracted from the target (if available) + + + + + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates an input text element with a javascript that prevents the + chars listed in the forbid attribute from being entered. + + + You must pass an forbid value through the dictionary. + It must be a comma separated list of chars that cannot be accepted on the field. + For example: + + + FormHelper.FilteredTextField("product.price", {forbid='46'}) + + In this case the key code 46 (period) will not be accepted on the field. + + The value is extracted from the target (if available). + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element. + + You must invoke before using it. + + + + + Generates an input text element with a javascript that prevents + chars other than numbers from being entered. + + The value is extracted from the target (if available) + + + + + + + + You must include the formhelper javascript functions to use the NumberField. + See + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates an input text element with a javascript that prevents + chars other than numbers from being entered. + + The value is extracted from the target (if available) + + + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + You must include the formhelper javascript functions to use the NumberField. + See + + You can optionally pass an exceptions value through the dictionary. + It must be a comma separated list of chars that can be accepted on the field. + For example: + + + FormHelper.NumberField("product.price", {exceptions='13,10,11'}) + + In this case the key codes 13, 10 and 11 will be accepted on the field. + + You can aslo optionally pass an forbid value through the dictionary. + It must be a comma separated list of chars that cannot be accepted on the field. + For example: + + + FormHelper.NumberField("product.price", {forbid='46'}) + + In this case the key code 46 (period) will not be accepted on the field. + + + + + Generates an input text element with a javascript that prevents + chars other than numbers from being entered. The value is not gathered + from the context, instead you specify it on the second argument + + + + + + The object to get the value from and to be based on to create the element name. + The current value to output. + The generated form element + + + You must include the formhelper javascript functions to use the NumberField. + See + + + + + Generates an input text element with a javascript that prevents + chars other than numbers from being entered. The value is not gathered + from the context, instead you specify it on the second argument + + + + + + The object to get the value from and to be based on to create the element name. + The current value to output. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + You must include the formhelper javascript functions to use the NumberField. + See + + + + + Generates a textarea element. + + The value is extracted from the target (if available) + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates a textarea element. + + The value is extracted from the target (if available) + + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a textarea element with a specified value. + + The target to base the element name on. + The value to apply to the field. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a password input field. + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates a password input field. + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates an input password element with a javascript that prevents + chars other than numbers from being entered. + + The value is extracted from the target (if available) + + + + You must invoke before using it + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates an input password element with a javascript that prevents + chars other than numbers from being entered. + + The value is extracted from the target (if available) + + + You can optionally pass an exceptions value through the dictionary. + It must be a comma separated list of chars that can be accepted on the field. + For example: + + + FormHelper.NumberField("product.price", {exceptions='13,10,11'}) + + In this case the key codes 13, 10 and 11 will be accepted on the field. + + You can aslo optionally pass an forbid value through the dictionary. + It must be a comma separated list of chars that cannot be accepted on the field. + For example: + + + FormHelper.NumberField("product.price", {forbid='46'}) + + In this case the key code 46 (period) will not be accepted on the field. + + + You must invoke before using it + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a label element. + + The object to get the value from and to be based on to create the element name. + Legend + The generated form element + + + + Generates a label element. + + The object to get the value from and to be based on to create the element name. + Legend + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a hidden form element. + + The value is extracted from the target (if available) + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates a hidden form element with the specified value + + The object to get the value from and to be based on to create the element name. + The value for the hidden field + The generated form element + + + + Generates a hidden form element. + + The value is extracted from the target (if available) + + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a hidden form element with the specified value + + The object to get the value from and to be based on to create the element name. + The value for the hidden field + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Creates a instance + which is enumerable. For each interaction you can invoke + which will correctly render + a checkbox input element for the current element on the supplied set (dataSource). + + The enumerable item will be an element of the dataSource. + + If the dataSource + elements are complex objects (ie not string or primitives), + supply the parameters value and text to the dictionary to make + the helper use the specified properties to extract the option value and content respectively. + + Usually both the target and obviously the dataSource are sets + with multiple items. The element types tend to be the same. If + they are not, you might have to specify the suffix parameters on + the attributes as it would not be inferred. + + + + + Consider the following action code: + + public void Index() + { + // data source + PropertyBag["primenumbers"] = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23 }; + + // initial selection + PropertyBag["selectedPrimes"] = new int[] { 11, 19 }; + } + + + And the respective view code + + + #set($items = $FormHelper.CreateCheckboxList("selectedPrimes", $primenumbers)) + + #foreach($elem in $items) + $items.Item() $elem + #end + + + That will generates the following html: + + + <input type="checkbox" id="selectedPrimes_0_" name="selectedPrimes[0]" value="2" /> 2 + <input type="checkbox" id="selectedPrimes_1_" name="selectedPrimes[1]" value="3" /> 3 + <input type="checkbox" id="selectedPrimes_2_" name="selectedPrimes[2]" value="5" /> 5 + <input type="checkbox" id="selectedPrimes_3_" name="selectedPrimes[3]" value="7" /> 7 + <input type="checkbox" id="selectedPrimes_4_" name="selectedPrimes[4]" value="11" checked="checked" /> 11 + <input type="checkbox" id="selectedPrimes_5_" name="selectedPrimes[5]" value="13" /> 13 + <input type="checkbox" id="selectedPrimes_6_" name="selectedPrimes[6]" value="17" /> 17 + <input type="checkbox" id="selectedPrimes_7_" name="selectedPrimes[7]" value="19" checked="checked" /> 19 + <input type="checkbox" id="selectedPrimes_8_" name="selectedPrimes[8]" value="23" /> 23 + + + + To customize the id, you can call the overload: + + + + #set($items = $FormHelper.CreateCheckboxList("selectedPrimes", $primenumbers)) + + #foreach($elem in $items) + $items.Item("myId${velocityCount}") $Form.LabelFor("myId${velocityCount}", $elem.ToString())
+ #end +
+
+ + The object to get the value from and to be based on to create the element name. + The set of available elements + The generated form element +
+ + + Creates a instance + which is enumerable. For each interaction you can invoke + which will correctly render + a checkbox input element for the current element on the supplied set (dataSource). + + The enumerable item will be an element of the dataSource. + + If the dataSource + elements are complex objects (ie not string or primitives), + supply the parameters value and text to the dictionary to make + the helper use the specified properties to extract the option value and content respectively. + + Usually both the target and obviously the dataSource are sets + with multiple items. The element types tend to be the same. If + they are not, you might have to specify the suffix parameters on + the attributes as it would not be inferred. + + + + + + + Consider the following action code: + + public void Index() + { + Category[] categories = new Category[] { new Category(1, "Music"), new Category(2, "Humor"), new Category(3, "Politics") }; + PropertyBag["categories"] = categories; // datasource + + Blog blog = new Blog(); + blog.Categories = new Category[] { new Category(2, "Humor") }; // initial selection + PropertyBag["blog"] = blog; + } + + + And the respective view code + + + #set($items = $Form.CreateCheckboxList("blog.categories", $categories, "%{value='Id'}")) + + #foreach($elem in $items) + $items.Item() $elem + #end + + + That will generates the following html: + + + <input type="checkbox" id="blog_categories_0_" name="blog.categories[0].Id" value="1" /> Music + <input type="checkbox" id="blog_categories_1_" name="blog.categories[1].Id" value="2" checked="checked" /> Humor + <input type="checkbox" id="blog_categories_2_" name="blog.categories[2].Id" value="3" /> Politics + + + + + The object to get the value from and to be based on to create the element name. + The set of available elements + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Outputs a checkbox element (for internal use) + + + The object to get the value from and to be based on to create the element name. + + + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a checkbox field. In fact it generates two as a + way to send a value if the primary checkbox is not checked. + This allow the process the be aware of the unchecked value + and act accordingly. + + + + Consider the following view code: + + + $Form.CheckboxField('user.disabled') + + + That is going to output: + + + <input type="checkbox" id="user_disabled" name="user.disabled" value="true" /> + <input type="hidden" id="user_disabledH" name="user.disabled" value="false" /> + + + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Generates a checkbox field. In fact it generates two as a + way to send a value if the primary checkbox is not checked. + This allow the process the be aware of the unchecked value + and act accordingly. + + + The checked and unchecked values sent to the server defaults + to true and false. You can override them using the + parameters trueValue and falseValue, but the DataBinder is prepared only + to treat boolean arrays. + + + + + + + The object to get the value from and to be based on to create the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates a radio input type with the specified + value to send to the served in case the element in checked. + It will automatically check the radio if the target + evaluated value is equal to the specified valueToSend. + + + + Consider the following action code: + + + public void Index() + { + PropertyBag["mode"] = FileMode.Truncate; + } + + + And the following view code: + + + $Form.RadioField("mode", "Append") FileMode.Append + $Form.RadioField("mode", "Create") FileMode.Create + $Form.RadioField("mode", "CreateNew") FileMode.CreateNew + $Form.RadioField("mode", "Open") FileMode.Open + $Form.RadioField("mode", "OpenOrCreate", "%{id='customhtmlid'}") FileMode.OpenOrCreate + $Form.RadioField("mode", "Truncate") FileMode.Truncate + + + That is going to output: + + + <input type="radio" id="mode" name="mode" value="Append" /> FileMode.Append + <input type="radio" id="mode" name="mode" value="Create" /> FileMode.Create + <input type="radio" id="mode" name="mode" value="CreateNew" /> FileMode.CreateNew + <input type="radio" id="mode" name="mode" value="Open" /> FileMode.Open + <input type="radio" id="customhtmlid" name="mode" value="OpenOrCreate" /> FileMode.OpenOrCreate + <input type="radio" id="mode" name="mode" value="Truncate" checked="checked" /> FileMode.Truncate + + + + + The object to get the value from and to be based on to create the element name. + + The generated form element + + + + Generates a radio input type with the specified + value to send to the served in case the element in checked. + It will automatically check the radio if the target + evaluated value is equal to the specified valueToSend. + + + + + The object to get the value from and to be based on to create the element name. + + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates an input file element. + + Dirrently than other operations exposed by this helper, + no value is extracted for this operation + + + The object to be based on when creating the element name. + The generated form element + + + + Generates an input file element. + + Dirrently than other operations exposed by this helper, + no value is extracted for this operation + + + The object to be based on when creating the element name. + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Creates a select element and its options based on the dataSource. + If the dataSource + elements are complex objects (ie not string or primitives), + supply the parameters value and text to the dictionary to make + the helper use the specified properties to extract the option value and content respectively. + + You can also specify the attribute firstoption to force the first option be + something like 'please select'. You can set the value of firstoption by specifying the attribute + firstoptionvalue. The default value is '0'. + + + Usually the target is a single value and the dataSource is obviously + a set with multiple items. The element types tend to be the same. If + they are not, you might have to specify the suffix parameters on + the attributes as it would not be inferred. + + + The target can also be a set. In this case the intersection will be + the initially selected elements. + + + The object to get the value from and to be based on to create the element name. + The set of available elements + The generated form element + + + + Creates a select element and its options based on the dataSource. + If the dataSource + elements are complex objects (ie not string or primitives), + supply the parameters value and text to the dictionary to make + the helper use the specified properties to extract the option value and content respectively. + + You can also specify the attribute firstoption to force the first option be + something like 'please select'. You can set the value of firstoption by specifying the attribute + firstoptionvalue. The default value is '0'. + + + Usually the target is a single value and the dataSource is obviously + a set with multiple items. The element types tend to be the same. If + they are not, you might have to specify the suffix parameters on + the attributes as it would not be inferred. + + + The target can also be a set. In this case the intersection will be + the initially selected elements. + + + The object to get the value from and to be based on to create the element name. + The set of available elements + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Creates a select element and its options based on the dataSource. + If the dataSource + elements are complex objects (ie not string or primitives), + supply the parameters value and text to the dictionary to make + the helper use the specified properties to extract the option value and content respectively. + + You can also specify the attribute firstoption to force the first option be + something like 'please select'. You can set the value of firstoption by specifying the attribute + firstoptionvalue. The default value is '0'. + + + Usually the target is a single value and the dataSource is obviously + a set with multiple items. The element types tend to be the same. If + they are not, you might have to specify the suffix parameters on + the attributes as it would not be inferred. + + + The target can also be a set. In this case the intersection will be + the initially selected elements. + + + The object to get the value from and to be based on to create the element name. + + The set of available elements + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Generates the select. + + The target. + The selected value. + The data source. + The attributes. + + + + + Creates a list of pairs for the enum type. + + enum type. + + + + + Configures this FormHelper instance to use the supplied + web validator to generate field validation. + + The validation provider. + + + + Configures this FormHelper instance to use Prototype for form fields validation + + + + + Configures this FormHelper instance to use fValidate for form fields validation + + + + + Configures this FormHelper instance to use Zebda for form fields validation + + + + + Disables the validation. + + + + + Applies the validation. + + Type of the input. + The target. + The attributes. + + + + Rewrites the target if within object scope. + + The target. + + + + + Creates the specified input element + using the specified parameters to supply the name, value, id and others + html attributes. + + + The object to get the value from and to be based on to create the element name. + + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Creates the specified input element + using the specified parameters to supply the name, value, id and others + html attributes. + + + + The object to get the value from and to be based on to create the element name. + + Attributes for the FormHelper method and for the html element it generates + The generated form element + + + + Creates the input element. + + The type. + The value. + The attributes. + + + + + Formats if necessary. + + The value. + The attributes. + + + + + Obtains the target property. + + The context. + The target. + The action. + + + + + Queries the context for the target value + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Queries the context for the target value + + + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Obtains the root instance. + + The context. + The object to get the value from and to be based on to create the element name. + The generated form element + + + + Obtains the root instance. + + The context. + The target. + The pieces. + + + + + Obtains the type of the root. + + The context. + The target. + The pieces. + + + + + + + + + + The generated form element + + + + Creates the HTML id. + + The attributes. + The target. + The generated form element + + + + Creates the HTML id. + + The attributes. + The target. + if set to true [remove entry]. + The generated form element + + + + Determines whether the present value matches the value on + the initialSetValue (which can be a single value or a set) + + Value from the datasource + Value from the initial selection set + Optional. Property to obtain the value from + true if the initial selection is a set + true if it's selected + + + + This class is an enumerable list of checkboxes. + It uses the to manage the sets + and to control the check/uncheck state. + + + + + Initializes a new instance of the class. + + The helper. + The object to get the value from and to be based on to create the element name. + The initial selection set. + The set of available elements + Attributes for the FormHelper method and for the html element it generates + + + + Outputs the Checkbox in the correct state (checked/unchecked) based + on the Set. + + + The generated input element + + + + Outputs the Checkbox in the correct state (checked/unchecked) based + on the Set. + + + The element id + The generated input element + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Gets the current element in the collection. + + + The current element in the collection. + The enumerator is positioned before the first element of the collection or after the last element. + + + + Gets the current set item. + + The current set item. + + + + Abstracts the approach to access values on objects. + + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Implementation of + that uses reflection to access values + + + + + Initializes a new instance of the class. + + The prop info. + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Implementation of + to access DataRow's value + + + + + Initializes a new instance of the class. + + Name of the column. + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Implementation of + to access DataRowView's value + + + + + Initializes a new instance of the class. + + Name of the column. + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Empty implementation of a + + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Implementation of + to access enum fields + + + + + Initializes a new instance of the class. + + Type of the enum. + + + + Gets the value. + + The instance. + + + + + Gets the name. + + The name. + + + + Abstract factory for implementations + + + + + Creates the specified target type. + + Type of the target. + Name of the key. + + + + + Initializes a new instance of the class. + + The target. + if set to true [is validation enabled]. + + + + Gets the root target. + + The root target. + + + + Gets a value indicating whether this instance is validation enabled. + + + true if this instance is validation enabled; otherwise, false. + + + + + Provides usefull common methods to generate HTML tags. + + This helper provides the means to generate commonly used HTML tags. + All of it's methods return that holds resulting HTML. + + + + + Creates a fieldset tag with a legend. + + <fieldset><legend>legendArg</legend> + + + + Legend to use within the fieldset. + HTML string opening a fieldset tag, followed by a legend tag. + Calling FieldSet( "legendArg" ) results in: + <fieldset><legend>legendArg</legend> + + This example shows how to use together with : + + $HtmlHelper.FieldSet( "legendArg" ) + ... + $HtmlHelper.EndFieldSet() + + + + + + Creates a closing fieldset tag. + + </fieldset> + + + + HTML string closing the fieldset. + This method should be invoked after to close the fieldset. + Calling EndFieldSet() results in: + </fieldset> + + This example shows how to use together with : + + $HtmlHelper.FieldSet( "legendArg" ) + ... + $HtmlHelper.EndFieldSet() + + + + + This method has three overloads. + + Creates a form tag with "post" method and specified . + + <form method="post" action="actionArg"> + + + + Target action for the form. + HTML string with form opening tag. + Calling Form( "actionArg" ) results in: + <form method="post" action="actionArg"> + + This example shows how to use together with : + + $HtmlHelper.Form( "actionArg" ) + ... + $HtmlHelper.EndForm() + + + + + + Creates a form tag with the specified , and + attributes. + + <form method="methodArg" action="actionArg" id="idArg"> + + + + Target action for the form. + Form HTML ID. + Form method (get, post, etc). + HTML string with form opening tag. + Calling Form( "actionArg", "idArg", "methodArg" ) results in: + <form method="methodArg" action="actionArg" id="idArg"> + + This example shows how to use Form together with : + + $HtmlHelper.Form( "actionArg", "idArg", "methodArg" ) + ... + $HtmlHelper.EndForm() + + + + + + Creates a form tag with the specified and attributes, + and event handler. + + <form method="methodArg" action="actionArg" id="idArg" onsubmit="onSubmitArg"> + + + + Target action for the form. + Form HTML ID. + Form method (get, post, etc). + JavaScript inline code to be invoked upon form submission. + HTML string with form opening tag. + Calling Form( "actionArg", "idArg", "methodArg", "onSubmitArg" ) results in: + <form method="methodArg" action="actionArg" id="idArg" onsubmit="onSubmitArg"> + + This example shows how to use Form together with : + + $HtmlHelper.Form( "actionArg", "idArg", "methodArg", "submitHandler()" ) + ... + $HtmlHelper.EndForm() + + + + + + Creates a form tag with the specified attribute. + + <form action="actionArg"> + + + + Target action for the form. + Html Attributes for the form tag + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + An action on the current controller. + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + A controller name. + An action on . + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + A controller name. + An action on . + Object to use for the action ID argument. + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + A controller name. + An action on . + Additional attributes for the form tag. + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + A controller name. + An action on . + Object to use for the action ID argument. + Additional attributes for the form tag. + HTML string with form opening tag. + + + + Creates a form tag targeting a URL in the style of the methods. + + A controller name. + An action on . + Object to use for the action ID argument. + Form method (get, post, etc). + Additional attributes for the form tag. + HTML string with form opening tag. + + + + Creates a closing form tag. + + </form> + + + + HTML string with form closing tag. + + Calling EndForm() results in: + </form> + + This example shows how to use together with : + + $HtmlHelper.Form( "actionArg", "idArg", "methodArg", "submitHandler()" ) + ... + $HtmlHelper.EndForm() + + + + + This method has two overloads. + + Creates an anchor (link) to the + + <a href="/sometarget.html">linkText</a> + + + link's target. + Text of the link. + HTML string with anchor to the specified . + Calling Link( "something.html", "to something" ) results in: + <a href="something.html">something</a> + + This example shows how to use Link: + + $HtmlHelper.Link( "mypage.html", "This is a link to my page" ) + + + + + + Creates an anchor (link) to the + + <a href="/sometarget.html">linkText</a> + + + link's target. + Text of the link. + Additional attributes for the a tag. + HTML string with anchor to the specified . + Calling Link( "something.html", "to something", $DictHelper.CreateDict("class=mylinkclass") ) results in: + <a href="something.html" class="mylinkclass">something</a> + + This example shows how to use Link: + + $HtmlHelper.Link( "mypage.html", "This is a link to my page", $DictHelper.CreateDict("class=mylinkclass") ) + + + + + This method has three overloads. + + Creates an anchor (link) to the on the current controller. + + <a href="/website/currentController/actionArg.rails">nameArg</a> + + + Name for the link. + Action to link to. + HTML string with anchor to the specified . + Calling LinkTo( "nameArg", "actionArg" ) results in: + <a href="/websiter/currentController/actionArg.rails">nameArg</a> + + This example shows how to use LinkTo: + + $HtmlHelper.LinkTo( "linkName", "requiredAction" ) + + + + + This method has three overloads. + + Creates an anchor (link) to the on the current controller. + + <a href="/website/currentController/actionArg.rails">nameArg</a> + + + Name for the link. + link options + HTML string with anchor to the specified . + Calling LinkTo( "nameArg", DictHelper.CreateDict("controller=home","action=index") ) results in: + <a href="/websiter/home/index.rails">nameArg</a> + + This example shows how to use LinkTo: + + $HtmlHelper.LinkTo( "linkName", DictHelper.CreateDict("controller=home","action=index") ) + + + + + + Creates an anchor (link) to the on the specified . + + <a href="/website/controllerArg/actionArg.rails">nameArg</a> + + + Name for the link. + Controller to link to. + Action to link to. + HTML string with anchor to the specified + and . + Calling LinkTo( "nameArg", options ) results in: + <a href="/website/controllerArg/actionArg.rails">nameArg</a> + + This example shows how to use LinkTo: + + $HtmlHelper.LinkTo( "linkName", {@action:} ) + + + + + + Creates an anchor (link) to the on the specified + passing provided . + + <a href="/website/controllerArg/actionArg.rails?id=objectId">nameArg</a> + + + Name for the link. + Controller to link to. + Action to link to. + Object to use for the action ID argument. + HTML string with anchor to the specified , + and . + Calling LinkTo( "nameArg", "controllerArg", "actionArg", object ) results in: + <a href="/website/controllerArg/actionArg.rails?id=object">nameArg</a> + + is used to convert to the actual . + + This example shows how to use LinkTo: + + $HtmlHelper.LinkTo( "linkName", "someController", "requiredAction", objectToRefByID ) + + + + + + Creates an anchor (link) to the on the specified + + <a href="/website/controllerArg/actionArg.rails">nameArg</a> + + + Name for the link. + Controller to link to. + Action to link to. + Additional attributes for the a tag. + HTML string with anchor to the specified + Calling LinkToAttributed( "nameArg", "controllerArg", "actionArg", IDictionary ) results in: + <a href="/website/controllerArg/actionArg.rails">nameArg</a> + + This example shows how to use LinkToAttributed: + + $HtmlHelper.LinkToAttributed( "linkName", "someController", "requiredAction", $DictHelper.CreateDict("class=something") ) + + + + + + Creates an anchor (link) to the on the specified + + <a href="/website/controllerArg/actionArg.rails?id=x">nameArg</a> + + + Name for the link. + Controller to link to. + Action to link to. + The ID to be passed as a parameter for the action + Additional attributes for the a tag. + HTML string with anchor to the specified + Calling LinkToAttributed( "nameArg", "controllerArg", "actionArg", IDictionary ) results in: + <a href="/website/controllerArg/actionArg.rails">nameArg</a> + + This example shows how to use LinkToAttributed: + + $HtmlHelper.LinkToAttributed( "linkName", "someController", "requiredAction", $DictHelper.CreateDict("class=something") ) + + + + + + Creates an anchor (link) to the on the current controller that posts + using a hidden form element. + + Name for the link. + Action to link to on the current controller. + HTML string with anchor that posts to the current controller + + + + Creates an anchor (link) to the on the current controller that posts + using a hidden form element. + + Name for the link. + Action to link to on the current controller. + The ID to be passed as a parameter for the action. + HTML string with anchor that posts to the current controller + + + + Creates an anchor (link) to the on the current controller that posts + using a hidden form element. + + Name for the link. + Action to link to on the current controller. + Guards the form submission with a javascript confirm popup. + HTML string with anchor that posts to the current controller + + + + Creates an anchor (link) to the on the current controller that posts + using a hidden form element. + + Name for the link. + Action to link to on the current controller. + The ID to be passed as a parameter for the action. + Guards the form submission with a javascript confirm popup. + HTML string with anchor that posts to the current controller + + + + Creates an anchor (link) to the on the specified that posts + using a hidden form element. + + Name for the link. + Controller to link to. + Action to link to. + The ID to be passed as a parameter for the action. + HTML string with anchor that posts to the specified + + + + Creates an anchor (link) to the on the specified that posts + using a hidden form element. + + Name for the link. + Controller to link to. + Action to link to. + Guards the form submission with a javascript confirm popup. + HTML string with anchor that posts to the specified + + + + Creates an anchor (link) to the on the specified that posts + using a hidden form element. + + Name for the link. + Controller to link to. + Action to link to. + The ID to be passed as a parameter for the action. + Guards the form submission with a javascript confirm popup. + HTML string with anchor that posts to the specified + + + + Creates an anchor (link) to the on the specified that posts + using a hidden form element. + + Name for the link. + Controller to link to. + Action to link to. + Guards the form submission with a javascript confirm popup. + Additional attributes for the a tag. + HTML string with anchor that posts to the specified + + + + Creates an anchor (link) to the + on the specified that posts + using a hidden form element. + + Name for the link. + Controller to link to. + Action to link to. + The ID to be passed as a parameter for the action. + Guards the form submission with a javascript confirm popup. + Additional attributes for the a tag. + HTML string with anchor that posts to the specified + + + + Maps to website virtual path. + /website/targetArg + + Target path to map. + URL string pointing to the in the context of the website. + Calling MapToVirtual( "targetArg" ) results in: + /website/targetArg + + This example shows how to use : + + $HtmlHelper.MapToVirtual( "targetFolder/targetFile.html" ) + + + + + This method has two overloads. + + Creates a label for the element indicated with + . + + <label for="forIdArg">labelArg</label> + + + ID of the element for which to create the lable. + Label name. + HTML string with generated label. + Calling LabelFor( "forIdArg", "labelArg" ) results in: + <label for="forIdArg">labelArg</label> + + This example shows how to use : + + $HtmlHelper.LabelFor( "forIdArg", "labelArg" ) + + + + + + Creates a label for the element indicated with + . + + <label key1="value1" key2="value2" for="forIdArg">labelArg</label> + + + ID of the element for which to create the label. + Label name. + Additional attributes to add to the label. + HTML string with generated label. + Calling LabelFor( "forIdArg", "labelArg", IDictionary ) results in: + <label key5="value5" key4="value4" key1="value1" key3="value3" key2="value2" for="forIdArg">labelArg</label> + + + is used to generate additional attributes for the label tag. + are used to name attributes. + are used to assign those attributes values. + + This example shows how to use : + + $HtmlHelper.LabelFor( "forIdArg", "labelArg", IDictionary ) + + + + + This method has two overloads. + + Creates three select tags to input day, month and year. + + <select name="nameArgday" id="nameArgday" > ... </select> + <select name="nameArgmonth" id="nameArgmonth" > ... </select> + <select name="nameArgyear" id="nameArgyear" > ... </select> + + + Name to use with name and id arguments of the select tag. + to use for default selected date. + A long HTML string with three select tag input date. + Calling DateTime( "nameArg", new DateTime( 2005, 07, 15 ) ) results in: + + <select name="nameArgday" id="nameArgday" > <option>1</option> + <option>2</option> + ... + <option>14</option> + <option selected>15</option> + <option>16</option> + ... + <option>30</option> + <option>31</option> + </select> <select name="nameArgmonth" id="nameArgmonth" > <option>1</option> + <option>2</option> + ... + <option>6</option> + <option selected>7</option> + <option>8</option> + ... + <option>11</option> + <option>12</option> + </select> <select name="nameArgyear" id="nameArgyear" > <option>1930</option> + <option>1931</option> + ... + <option>2004</option> + <option selected>2005</option> + <option>2006</option> + ... + <option>2029</option> + </select> + As above example shows the year range is hardcoded between 1930 and 2029. + + is used to generate name and id for each select tag. + Supplied is concatenated with "day", "month", or "year" to create + for the tag attributes. + + + This example shows how to use DateTime: + + $HtmlHelper.DateTime( "nameArg", new DateTime( 2005, 07, 15 ) ) + + + + + + Creates three select tags to input day, month and year. + + <select name="nameArgday" id="nameArgday" key1="value1" key3="value3" key2="value2" > ... </select> + <select name="nameArgmonth" id="nameArgmonth" key1="value1" key3="value3" key2="value2" > ... </select> + <select name="nameArgyear" id="nameArgyear" key1="value1" key3="value3" key2="value2" > ... </select> + + + Name to use with name and id arguments of the select tag. + to use for default selected date. + Additional attributes for select tags. + A long HTML string with three select tag input date. + Calling DateTime( "nameArg", new DateTime( 2005, 07, 15 ), IDictionary ) results in: + + <select name="nameArgday" id="nameArgday" key1="value1" key2="value2" > <option>1</option> + <option>2</option> + ... + <option>14</option> + <option selected>15</option> + <option>16</option> + ... + <option>30</option> + <option>31</option> + </select> <select name="nameArgmonth" id="nameArgmonth" key1="value1" key2="value2" > <option>1</option> + <option>2</option> + ... + <option>6</option> + <option selected>7</option> + <option>8</option> + ... + <option>11</option> + <option>12</option> + </select> <select name="nameArgyear" id="nameArgyear" key1="value1" key2="value2" > <option>1930</option> + <option>1931</option> + ... + <option>2004</option> + <option selected>2005</option> + <option>2006</option> + ... + <option>2029</option> + </select> + As above example shows the year range is hardcoded between 1930 and 2029. + + is used to generate name and id for each select tag. + Supplied is concatenated with "day", "month", or "year" to create + for the tag attributes. + + + is used to generate additional attributes for each of the select tags. + are used to name attributes. + are used to assign those attributes values. + + + This example shows how to use DateTime: + + $HtmlHelper.DateTime( "nameArg", new DateTime( 2005, 07, 15 ), IDictionary ) + + + + + + Creates a text area element. + <textarea id="nameArg" name="nameArg" cols="10" rows="10">valueArg</textarea> + + Value for name and id attributes. + cols attribute value. + rows attribute value. + Text to place inside of the text area. + HTML string with closed textarea tag. + Calling TextArea( "nameArg", 10, 10, "valueArg" ) results in: + <textarea id="nameArg" name="nameArg" cols="10" rows="10">valueArg</textarea> + + This example shows how to use : + + $HtmlHelper.TextArea( "nameArg", 10, 20, "Text inside text area." ) + + + + + This method has three overloads. + + Creates an input element of the button type. + <input type="button" value="valueArg" /> + + for value attribute. + HTML string with button type input tag. + Calling InputButton( "valueArg" ) results in: + <input type="button" name="valueArg" value="valueArg" /> + + This example shows how to use InputButton: + + $HtmlHelper.InputButton( "valueArg" ) + + + + + + Creates an input element of the button type. + <input type="button" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + HTML string with button type input tag. + + + + Creates an input element of the button type. + <input type="button" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + Additional attributes for the input tag. + HTML string with button type input tag. + + + This method has three overloads. + + Creates an input element of the checkbox type. + <input type="checkbox" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + HTML string with checkbox type input tag. + Calling InputCheckbox( "name", "1" ) results in: + <input type="checkbox" name="name" id="name" value="1" /> + + + + + Creates an input element of the checkbox type. + <input type="checkbox" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + If true, adds the checked attributed to the tag + HTML string with checkbox type input tag. + + + + Creates an input element of the checkbox type. + <input type="checkbox" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + Additional attributes for the input tag. + HTML string with checkbox type input tag. + + + This method has two overloads. + + Creates an input element of the radio type. + <input type="radio" name="nameArg" value="valueArg" /> + + Value for name attribute. + for value attribute. + HTML string with radio type input tag. + Calling InputRadio( "name", "1" ) results in: + <input type="radio" name="name" value="1" /> + + + + + Creates an input element of the radio type. + <input type="radio" name="nameArg" value="valueArg" /> + + Value for name attribute. + for value attribute. + Additional attributes for the input tag. + HTML string with radio type input tag. + + + This method has two overloads. + + Creates an input element of the file type. + <input type="file" name="nameArg" /> + + Value for name attribute. + HTML string with file type input tag. + Calling InputFile( "name" ) results in: + <input type="file" name="name" /> + + + + + Creates an input element of the file type. + <input type="file" name="nameArg" /> + + Value for name attribute. + Additional attributes for the input tag. + HTML string with file type input tag. + + + This method has four overloads. + + Creates an input element of the text type. + <input type="text" name="nameArg" id="nameArg" value="valueArg" /> + + Value for name and id attributes. + for value attribute. + HTML string with text type input tag. + Calling InputText( "nameArg", "valueArg" ) results in: + <input type="text" name="nameArg" id="nameArg" value="valueArg" /> + + This example shows how to use InputText: + + $HtmlHelper.InputText( "nameArg", "valueArg" ) + + + + + + Creates an input element of the text type of specified + and . + <input type="text" name="nameArg" id="nameArg" value="valueArg" size="10" maxlength="10" /> + + Value for name and id attributes. + for value attribute. + size attribute value. + maxlength attribute value. + HTML string with text type input tag. + Calling InputText( "nameArg", "valueArg", 10, 10 ) results in: + <input type="text" name="nameArg" id="nameArg" value="valueArg" size="10" maxlength="10" /> + + This example shows how to use InputText: + + $HtmlHelper.InputText( "nameArg", "valueArg", 10, 10 ) + + + + + + Creates an input element of the text type with specified + , and . + <input type="text" name="nameArg" id="nameArg" value="valueArg" size="10" maxlength="10" /> + + Value for name and id attributes. + for value attribute. + size attribute value. + maxlength attribute value. + Additional attributes for the input tag. + HTML string with text type input tag. + Calling InputText( "nameArg", "valueArg", 10, 10, IDictionary ) results in: + <input type="text" name="nameArg" id="nameArg" value="valueArg" size="10" maxlength="10" key1="value1" key2="value2" /> + + is used to generate additional attributes for the label tag. + are used to name attributes. + are used to assign those attributes values. + + + This example shows how to use InputText: + + $HtmlHelper.InputText( "nameArg", "valueArg", 10, 10, IDictionary ) + + + + + + Creates an input element of the text type with custom and . + <input type="text" name="nameArg" id="idArg" value="valueArg" /> + + name attribute value. + for value attribute. + id attribute value. + HTML string with text type input tag. + Calling InputText( "nameArg", "valueArg", "idArg" ) results in: + <input type="text" name="nameArg" id="idArg" value="valueArg" /> + + This example shows how to use InputText: + + $HtmlHelper.InputText( "nameArg", "valueArg", "idArg" ) + + + + + This method has two overloads. + + Creates a hidden type input element. + <input type="hidden" name="nameArg" id="nameArg" value="valueArg" /> + + + + + Creates an input element of password type + + + + + Creates an input element of password type + + + + + Creates an input element of password type + + + + + Creates an input hidden element + + Value for name and id attributes. + for value attribute. + HTML string with hidden type input tag. + Calling InputHidden( "nameArg", "valueArg" ) results in: + <input type="hidden" name="nameArg" id="nameArg" value="valueArg" /> + + This example shows how to use InputHidden: + + $HtmlHelper.InputHidden( "nameArg", "valueArg" ) + + + + + + Creates a hidden type input element. + <input type="hidden" name="nameArg" id="nameArg" value="object" /> + + Value for name and id attributes. + to supply for value attribute. + HTML string with hidden type input tag. + Calling InputHidden( "nameArg", object ) results in: + <input type="hidden" name="nameArg" id="nameArg" value="object" /> + + for value attribute is retrieved from + via . + + If is null is used as the value + . + + This example shows how to use InputHidden: + + $HtmlHelper.InputHidden( "nameArg", object ) + + + + + This method has two overloads. + + Creates a submit button. + <input type="submit" value="valueArg" /> + + for value attribute. + HTML string with submit type input tag. + Calling SubmitButton( "valueArg" ) results in: + <input type="submit" value="valueArg" /> + + This example shows how to use SubmitButton: + + $HtmlHelper.SubmitButton( "valueArg" ) + + + + + + Creates a submit button. + <input type="submit" value="valueArg" key1="value1" key2="value2" /> + + for value attribute. + Additional attributes for the input tag. + Calling SubmitButton( "valueArg", IDictionary ) results in: + <input type="submit" value="valueArg" key1="value1" key2="value2" /> + + is used to generate additional attributes for the label tag. + are used to name attributes. + are used to assign those attributes values. + + + This example shows how to use SubmitButton: + + $HtmlHelper.SubmitButton( "valueArg", IDictionary ) + + + + + This method has two overloads. + + Creates opening select tag. + <select name="nameArg" id="nameArg"> + + Value for name and id attributes. + HTML string with opening select tag. + Calling Select( "nameArg" ) results in: + <select name="nameArg" id="nameArg"> + + This example shows how to use Select together with : + + $HtmlHelper.Select( "nameArg" ) + ... + $HtmlHelper.EndSelect() + + + + + + Creates opening select tag. + <select name="nameArg" id="nameArg" key1="value1" key2="value2" > + + Value for name and id attributes. + Additional attributes for the select tag. + Calling Select( "nameArg", IDictionary ) results in: + <select name="nameArg" id="nameArg" key1="value1" key2="value2" > + + is used to generate additional attributes for the label tag. + are used to name attributes. + are used to assign those attributes values. + + + This example shows how to use Select together with : + + $HtmlHelper.Select( "nameArg", IDictionary ) + ... + $HtmlHelper.EndSelect() + + + + + + Creates a closing select tag. + + Calling EndSelect() results in: + </select> + + This example shows how to use together with EndSelect: + + $HtmlHelper.Select( "nameArg" ) + ... + $HtmlHelper.EndSelect() + + + + + + Creates an opening optgroup element. + + The label attribute. + An opening optgroup element. + + + + Creates a closing optgroup element. + + A closing optgroup element. + + + + TODO: Document this! + + + + + TODO: Document this! + + + Valid html attributes include: selected and disabled + + + + + Creates option elements from . Marks the + option that matches the argument (if provided). + + <option>0</option> + <option>1</option> + ... + <option>5</option> + <option selected>selectedArg</option> + <option>object</option> + + + Array of values for each option tag. + Name of the option tag to mark selected. + HTML string with array of option tags. + Calling CreateOptionsFromPrimitiveArray( Array, "selectedArg" ) results in: + + <option>0</option> + <option>1</option> + <option>2</option> + <option>3</option> + <option>4</option> + <option>5</option> + <option selected>selectedArg</option> + <option>object</option> + + + Elements in the array are converted to using . + + + This example shows how to use CreateOptionsFromPrimitiveArray: + + $HtmlHelper.CreateOptionsFromPrimitiveArray( Array, "selectedArg" ) + + + + + This method has two overloads. + + Creates options elements from an . + + <option value="valueProp">textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + + + Collection of objects each of which describes an option tag. + Name of the + objects property with the value for each option tag's + text. + Name of the objects property with the value for each + option tag's value attribute value. + HTML string with array of option tags. + + Calling CreateOptionsFromArray( Array, "textPropertyArg", + "valuePropertyArg", object ) with specific type objects results in: + + <option value="valueProp">textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + Calling CreateOptionsFromArray( Array, "textPropertyArg", + "valuePropertyArg", object ) with random type objects results in: + + <option>0</option> + <option>1</option> + <option>2</option> + <option>3</option> + <option>4</option> + <option>5</option> + <option>object</option> + <option>MR.Logic.Controllers.HtmlHelperController+SampleClass</option> + + Notice that the last option was generated from an object of the type + with the properties specified by and , but the method + is already in the mode of working with random type objects. + Explanation bellow describes two different modes of working with the method. + + There are two possible usages of the method depending on + the types of s which can be present in + : + + + Random type objects + Array is full of + random type objects. Properties specified by and aren't + used. Instead value argument is ommited and is invoked on each item in to retrieve text for an option tag. + + + + Single type objects + Array is objects + of one time. In this case and + can specify the names of the + properties of that type to use for option tags + generation. + + + + You cannot mix random type objects and specific type objects. + CreateOptionsFromArray + is looking at the first item in the + collection to get to access specified + properties. If usage is mixed either an unexpected exception will be + thrown or options will have unexpected strings. + + + CreateOptionsFromArray relies on to generate + all option tags. + + This example shows how to use CreateOptions: + + $HtmlHelper.CreateOptionsFromArray( ICollection, "textPropertyArg", "valuePropertyArg" ) + + + + + + Creates options elements from an . + + <option value="valueProp" selected>textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + + + Collection of objects each of which describes an option tag. + Name of the + objects property with the value for each option tag's + text. + Name of the objects property with the value for each + option tag's value attribute value. + indicating which + option tag is to be marked with selected + attribute. + HTML string with array of option tags. + + Calling CreateOptionsFromArray( Array, "textPropertyArg", + "valuePropertyArg", object ) with specific type objects results in: + + <option value="valueProp" selected>textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + Calling CreateOptionsFromArray( Array, "textPropertyArg", + "valuePropertyArg", object ) with random type objects results in: + + <option>0</option> + <option>1</option> + <option>2</option> + <option>3</option> + <option>4</option> + <option>5</option> + <option selected>object</option> + <option>MR.Logic.Controllers.HtmlHelperController+SampleClass</option> + + Notice that the last option was generated from an object of the type + with the properties specified by and , but the method + is already in the mode of working with random type objects. + Explanation bellow describes two different modes of working with the method. + + There are two possible usages of the method depending on + the types of s which can be present in + : + + + Random type objects + Array is full of + random type objects. Properties specified by and aren't + used. Instead value argument is ommited and is invoked on each item in to retrieve text for an option tag. + + + + Single type objects + Array is objects + of one time. In this case and + can specify the names of the + properties of that type to use for option tags + generation. + + + + You cannot mix random type objects and specific type objects. + CreateOptionsFromArray + is looking at the first item in the + collection to get to access specified + properties. If usage is mixed either an unexpected exception will be + thrown or options will have unexpected strings. + + + CreateOptionsFromArray relies on to generate + all option tags. + + This example shows how to use CreateOptions: + + $HtmlHelper.CreateOptionsFromArray( ICollection, "textPropertyArg", "valuePropertyArg", object ) + + + + + This method has two overloads. + + Creates options elements from an . + + <option value="valueProp">textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + + Collection of objects each of which describes an option tag. + Name of the + objects property with the value for each option tag's + text. + Name of the objects property with the value for each + option tag's value attribute value. + HTML string with array of option tags. + + Calling CreateOptions( ICollection, "textPropertyArg", + "valuePropertyArg", object ) with specific type objects results in: + + <option value="valueProp">textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + Calling CreateOptions( ICollection, "textPropertyArg", + "valuePropertyArg", object ) with random type objects results in: + + <option>0</option> + <option>1</option> + <option>2</option> + <option>3</option> + <option>4</option> + <option>5</option> + <option>object</option> + <option>MR.Logic.Controllers.HtmlHelperController+SampleClass</option> + + Notice that the last option was generated from an object of the type + with the properties specified by and , but the method + is already in the mode of working with random type objects. + Explanation bellow describes two different modes of working with the method. + + There are two possible usages of the method depending on + the types of s which can be present in + : + + + Random type objects + Array is full of + random type objects. Properties specified by and aren't + used. Instead value argument is ommited and is invoked on each item in to retrieve text for an option tag. + + + + Single type objects + Array is objects + of one time. In this case and + can specify the names of the + properties of that type to use for option tags + generation. + + + + You cannot mix random type objects and specific type objects. CreateOptions + is looking at the first item in the + collection to get to access specified + properties. If usage is mixed either an unexpected exception will be + thrown or options will have unexpected strings. + + + + This example shows how to use CreateOptions: + + $HtmlHelper.CreateOptions( ICollection, "textPropertyArg", "valuePropertyArg" ) + + + + + + Creates options elements from an . + + <option value="valueProp" selected>textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + + Collection of objects each of which describes an option tag. + Name of the + objects property with the value for each option tag's + text. + Name of the objects property with the value for each + option tag's value attribute value. + indicating which + option tag is to be marked with selected + attribute. + HTML string with array of option tags. + + Calling CreateOptions( ICollection, "textPropertyArg", + "valuePropertyArg", object ) with specific type objects results in: + + <option value="valueProp" selected>textProp</option> + <option value="0">textProp2</option> + <option value="5">textProp3</option> + + Calling CreateOptions( ICollection, "textPropertyArg", + "valuePropertyArg", object ) with random type objects results in: + + <option>0</option> + <option>1</option> + <option>2</option> + <option>3</option> + <option>4</option> + <option>5</option> + <option selected>object</option> + <option>MR.Logic.Controllers.HtmlHelperController+SampleClass</option> + + Notice that the last option was generated from an object of the type + with the properties specified by and , but the method + is already in the mode of working with random type objects. + Explanation bellow describes two different modes of working with the method. + + There are two possible usages of the method depending on + the types of s which can be present in + : + + + Random type objects + Array is full of + random type objects. Properties specified by and aren't + used. Instead value argument is ommited and is invoked on each item in to retrieve text for an option tag. + + + + Single type objects + Array is objects + of one time. In this case and + can specify the names of the + properties of that type to use for option tags + generation. + + + + You cannot mix random type objects and specific type objects. + CreateOptions + is looking at the first item in the + collection to get to access specified + properties. If usage is mixed either an unexpected exception will be + thrown or options will have unexpected strings. + + + + This example shows how to use CreateOptions: + + $HtmlHelper.CreateOptions( ICollection, "textPropertyArg", "valuePropertyArg", object ) + + + + + + Determines whether the specified value is selected. + + Value to be tested. + Selected value. + if is + ; otherwise, . + + if the specified is selected; otherwise, . + + Specified is selected if it + to the . Or if is an + array is selected if can find it + in . + + + + Gets the property get method. + + Object specifying the type for which to get the method. + Property name. + to be used to retrieve the property value. + If is null null is returned. + This method is used to get the to retrieve + specified property from the specified type. + Thrown is is null. + + + This method has two overloads. + + Builds an unordered ul list from supplied . + + <ul> + <li>0</li> + ... + <li>object</li> + </ul> + + + Collection with items to use for the list generation. + HTML string with ul tag list. + Calling BuildUnorderedList( ICollection ) results in: + + <ul> + <li>0</li> + <li>1</li> + <li>2</li> + <li>3</li> + <li>4</li> + <li>5</li> + <li>object</li> + </ul> + + Items in are converted to string through + . + + This example shows how to use BuildUnorderedList: + + $HtmlHelper.BuildUnorderedList( ICollection ) + + + + + + Builds an unordered ul list from supplied with + ul and li tags CSS class set to supplied attributes. + + <ol class="styleClassArg"> + <li class="itemClassArg">0</li> + ... + <li class="itemClassArg">object</li> + </ol> + + + Collection with items to use for the list generation. + CSS class name of the list ul tag. + CSS class name of the list item li tag. + HTML string with ul tag list. + Calling BuildUnorderedList( ICollection, "styleClassArg", "itemClassArg" ) results in: + + <ol class="styleClassArg"> + <li class="itemClassArg">0</li> + <li class="itemClassArg">1</li> + <li class="itemClassArg">2</li> + <li class="itemClassArg">3</li> + <li class="itemClassArg">4</li> + <li class="itemClassArg">5</li> + <li class="itemClassArg">object</li> + </ol> + + Items in are converted to string through + . + + This example shows how to use BuildOrderedList: + + $HtmlHelper.BuildUnorderedList( ICollection, "styleClassArg", "itemClassArg" ) + + + + + This method has two overloads. + + Builds an ordered ol list from supplied . + + <ol> + <li>0</li> + ... + <li>object</li> + </ol> + + + Collection with items to use for the list generation. + HTML string with ol tag list. + Calling BuildOrderedList( ICollection ) results in: + + <ol> + <li>0</li> + <li>1</li> + <li>2</li> + <li>3</li> + <li>4</li> + <li>5</li> + <li>object</li> + </ol> + + Items in are converted to string through + . + + This example shows how to use BuildOrderedList: + + $HtmlHelper.BuildOrderedList( ICollection ) + + + + + + Builds an ordered ol list from supplied with + ol and li tags CSS class set to supplied attributes. + + <ol class="styleClassArg"> + <li class="itemClassArg">0</li> + ... + <li class="itemClassArg">object</li> + </ol> + + + Collection with items to use for the list generation. + CSS class name of the list ol tag. + CSS class name of the list item li tag. + HTML string with ol tag list. + Calling BuildOrderedList( ICollection, "styleClassArg", "itemClassArg" ) results in: + + <ol class="styleClassArg"> + <li class="itemClassArg">0</li> + <li class="itemClassArg">1</li> + <li class="itemClassArg">2</li> + <li class="itemClassArg">3</li> + <li class="itemClassArg">4</li> + <li class="itemClassArg">5</li> + <li class="itemClassArg">object</li> + </ol> + + Items in are converted to string through + . + + This example shows how to use BuildOrderedList: + + $HtmlHelper.BuildOrderedList( ICollection, "styleClassArg", "itemClassArg" ) + + + + + + Builds a list with list tag specified by + from supplied with + list tag and li tags CSS class set to supplied attributes. + + <listTag class="styleClassArg"> + <li class="itemClassArg">0</li> + ... + <li class="itemClassArg">object</li> + </listTag> + + + List tag name. + Collection with items to use for the list generation. + CSS class name of the list ol tag. + CSS class name of the list item li tag. + HTML string with list of the requested type. + This method is can be used to generate custom type HTML list. + Currently HTML support only two types of lists ordered (ol tag) and unodered + (ultag). In general this method should be used by other methods responsible + for constructing some specific list. + + Calling BuildList( "listTag", ICollection, "styleClassArg", "itemClassArg" ) results in: + + <listTag class="styleClassArg"> + <li class="itemClassArg">0</li> + <li class="itemClassArg">1</li> + <li class="itemClassArg">2</li> + <li class="itemClassArg">3</li> + <li class="itemClassArg">4</li> + <li class="itemClassArg">5</li> + <li class="itemClassArg">object</li> + </listTag> + + + Items in are converted to string through + . + + This example shows how to use BuildList: + + BuildList("ol", elements, styleClass, itemClass); + + + + + + Generates a list item li tag. + + <li class="itemClassArg">object</li> + + + Item text. + Item CSS class name. + HTML string with a single li tag. + This method should be used to assist list generation. + + Calling BuildListItem( "object", "itemClassArg" ) results in: + + <li class="itemClassArg">object</li> + + + + This example shows how to use BuildListItem: + + BuildListItem(item.ToString(), itemClass); + + + + + + Operations to act on a collection/array of DOM elements. + + + Not really implemented + + + + + Gets the parent generator. + + The parent generator. + + + + Depicts the operations supported by the element Js generator. + + + + In practice you can access this generator by using the element accessor. + For example (using nvelocity syntax): + + + $page.el('element id') -> IJSElementGenerator instance + + + + + + + Replaces the content of the element. + + + + The following example uses nvelocity syntax: + + + $page.el('elementid').ReplaceHtml("%{partial='shared/newmessage.vm'}") + + + + Defines what to render + + + + Replaces the entire element's content -- and not only its innerHTML -- + by the content evaluated. + + + + The following example uses nvelocity syntax: + + + $page.el('messagediv').Replace("%{partial='shared/newmessage.vm'}") + + + + Defines what to render + + + + Gets the parent generator. + + The parent generator. + + + + Depicts the contract for javascript generators. + + + + + Urls can be specified as string or a dictionary. If the latter, the + is used. See + + + + The renderOptions is also a common parameter. If you pass a string, + the string will be rendered. If it is a dictionary, it instructs the infrastructure to + render a partial content. The dictionary must contain an entry named partial + with the absolute path to the view to render. + + + + + + The following is an example of using it with a nvelocity + syntax and renders static content: + + + $page.InsertHtml('Bottom', 'messagestable', "Message sent") + + + + The following uses a partial view: + + + + $page.InsertHtml('Bottom', 'messagestable', "%{partial='shared/newmessage.vm'}") + + + + The following redirects to a static page + + + + $page.RedirectTo('about.aspx') + + + + The following redirects using the + + + + $page.RedirectTo("%{controller='Home',action='index'}") + + + + + + + Inserts a content snippet relative to the element specified by the + + + The supported positions are + Top, After, Before, Bottom + + + + + The following example uses nvelocity syntax: + + + $page.InsertHtml('Bottom', 'messagestable', "%{partial='shared/newmessage.vm'}") + + + + The position to insert the content relative to the element id + The target element id + Defines what to render + + + + Replaces the content of the specified target element. + + + + The following example uses nvelocity syntax: + + + $page.ReplaceHtml('messagediv', "%{partial='shared/newmessage.vm'}") + + + + The target element id + Defines what to render + + + + Replaces the entire target element -- and not only its innerHTML -- + by the content evaluated. + + + + The following example uses nvelocity syntax: + + + $page.Replace('messagediv', "%{partial='shared/newmessage.vm'}") + + + + The target element id + Defines what to render + + + + Shows the specified elements. + + + + The elements must exist. + + + + The following example uses nvelocity syntax: + + + $page.Show('div1', 'div2') + + + + The elements ids. + + + + Hides the specified elements. + + + + The elements must exist. + + + + The following example uses nvelocity syntax: + + + $page.Hide('div1', 'div2') + + + + The elements ids. + + + + Toggles the display status of the specified elements. + + + + The elements must exist. + + + + The following example uses nvelocity syntax: + + + $page.Toggle('div1', 'div2') + + + + The elements ids. + + + + Remove the specified elements from the DOM. + + + + The elements must exist. + + + + The following example uses nvelocity syntax: + + + $page.Remove('div1', 'div2') + + + + The elements ids. + + + + Shows a JS alert + + + + The following example uses nvelocity syntax: + + + $page.Alert('You won a Mercedez') + + + + The message to display. + + + + Redirects to an url using the location.href. + This is required as most ajax libs don't care for the redirect status + in the http reply. + + + + The following redirects to a static page + + + $page.RedirectTo('about.aspx') + + + + The following redirects using the + + + + $page.RedirectTo("%{controller='Home',action='index'}") + + + + The URL. + + + + Re-apply Behaviour css' rules. + + + Only makes sense if you are using the Behaviour javascript library. + + + + + Generates a call to a scriptaculous' visual effect. + + + + + + The following example uses nvelocity syntax: + + + $page.VisualEffect('ToggleSlide', 'myelement') + + + + This is especially useful to show which elements + where updated in an ajax call. + + + + $page.ReplaceHtml('mydiv', "Hey, I've changed") + $page.VisualEffect('Highlight', 'mydiv') + + + + + The effect name. + The target element. + The optional options. + + + + Generates a call to a scriptaculous' drop out visual effect. + + + + + The target element. + The optional options. + + + + Assigns a javascript variable with the expression. + + + + The following example uses nvelocity syntax: + + + $page.Assign('myvariable', '10') + + + + Which outputs: + + + + myvariable = 10; + + + + With strings you can escape strings: + + + + $page.Assign('myvariable', '\'Hello world\'') + + + + Which outputs: + + + + myvariable = 'Hello world'; + + + + + The target variable + The right side expression + + + + Declares the specified variable as null. + + + + + The variable name. + + + + Calls the specified function with the optional arguments. + + + + The following example uses nvelocity syntax: + + + $page.call('myJsFunctionAlreadyDeclared', '10', "'message'", $somethingfrompropertybag, $anothermessage.to_squote) + + + + Which outputs: + + + + myJsFunctionAlreadyDeclared(10, 'message', 1001, 'who let the dogs out?') + + + + + The function name. + The arguments. + + + + Outputs the content using the renderOptions approach. + + + If the renderOptions is a string, the content is escaped and quoted. + + + + If the renderOptions is a dictionary, we extract the key partial + and evaluate the template it points to. The content is escaped and quoted. + + + + + + The following example uses nvelocity syntax: + + + $page.Call('myJsFunction', $page.render("%{partial='shared/newmessage.vm'}") ) + + + + Which outputs: + + + + myJsFunction('the content from the newmessage partial view template') + + + + + The render options. + + + + + Writes the content specified to the generator instance + + + + This is for advanced scenarios and for the infrastructure. Usually not useful. + + + The content. + + + + Writes the content specified to the generator instance + + + + This is for advanced scenarios and for the infrastructure. Usually not useful. + + The content. + + + + Dump the operations recorded so far as javascript code. + + + + + + + Creates a generator for a collection. + + The root expression. + + + + + Creates a generator for an element. + + The root expression. + + + + + Gets the js lines. + + The js lines. + + + + Represents a page of a bigger set + + + Indexes are zero based. + + + + + Checks whether the specified page exists. + Useful for Google-like pagination. + + + + + The index this page represents + + + + + The last index available on the set + + + + + The next index (from this page) + + + + + The previous index (from this page) + + + + + The first index + + + + + The first element (index + 1) + + + + + The last element in the page (count) + + + + + The count of all elements on the set + + + + + Gets the size of the page. + + The size of the page. + + + + Returns true if a previous page + is accessible from this page + + + + + Returns true if a next page is + accessible from this page + + + + + Returns true if a first page + exists + + + + + Returns true if a last page + exists + + + + + Used as callback handler to obtain the items + to be displayed. + + + + + This helper allows you to easily paginate through a data source + -- anything that implements . + + + + With the pagination you expose a instance to your view, + that can be used to created a very detailed page navigator. + + + You can use up to three approaches to pagination: + + + + + CreatePagination + Uses a whole data set and creates a with a slice of it. + + + CreateCachedPagination + Caches the dataset and creates a with a slice. + As the cache is shared, you must be very careful on creating a cache key that uniquely represents the + cached dataset. + + + + CreateCustomPage + + In this case, you are handling the slicing. The is created with your + actual dataset and information about total. It calculates the other information based on that. + + + + + + Performance wise, the best choice is the + + + + + + The parameter key that the helper looks for on the request + + + + + Creates a link to navigate to a specific page + + Page index + Link text + An anchor tag + + + + Creates a link to navigate to a specific page + + Page index + Link text + Attributes for the anchor tag + An anchor tag + + + + Creates a link to navigate to a specific page + + Page index + Link text + Attributes for the anchor tag + Query string entries for the link + An anchor tag + + + + Creates a link to navigate to a specific page + + Page index + Link text + Attributes for the anchor tag + An anchor tag + + + + Creates a which is a sliced view of + the data source + + the current controller + Data source to be used as target of the pagination + Page size + A instance + + + + Creates a which is a sliced view of + the data source + + Data source to be used as target of the pagination + Page size + current page index (1 based) + A instance + + + + Creates a which is a sliced view of + the data source + + the current controller + Data source to be used as target of the pagination + Page size + A instance + + + + Creates a which is a sliced view of + the data source + + Data source to be used as target of the pagination + Page size + current page index (1 based) + A instance + + + + Creates a which is a sliced view of + the data source. This method first looks for the datasource + in the and if not found, + it invokes the dataObtentionCallback and caches the result + using the specifed cacheKey + + the current controller + Cache key used to query/store the datasource + Page size + Callback to be used to populate the cache + A instance + + + + Creates a which is a sliced view of + the data source + + Assumes that the slicing is managed by the caller. + + + the current controller + Data source to be used as target of the pagination + Page size + The total of items in the datasource + A instance + + + + Creates a which is a sliced view of + the data source + + Assumes that the slicing is managed by the caller. + + + Data source to be used as target of the pagination + Page size + The total of items in the datasource + The current page index (1 based). + + + + + Creates a which is a sliced view of + the data source + + Assumes that the slicing is managed by the caller. + + + Data source to be used as target of the pagination + Page size + The total of items in the datasource + The current page index (1 based). + + + + + Represents the sliced data and offers + a few read only properties to create a pagination bar. + + + + + Abstract implementation of + which performs the standard calculations on + + + + + + Calculate the values of all properties + based on the specified parameters + + Start index + Last index + Total of elements + Page size + This page index + + + + Checks whether the specified page exists. + Useful for Google-like pagination. + + The page number + + + + Returns a enumerator for the contents + of this page only (not the whole set) + + Enumerator instance + + + + The first index + + + + + The index this page represents + + + + + The last index available on the set + + + + + The previous index (from this page) + + + + + The next index (from this page) + + + + + The first element (index + 1) + + + + + The last element in the page (count) + + + + + The count of all elements on the set + + + + + Gets the size of the page. + + The size of the page. + + + + Returns true if a previous page + is accessible from this page + + + + + Returns true if a next page is + accessible from this page + + + + + Returns true if a first page + exists + + + + + Returns true if a last page + exists + + + + + Initializes a new instance of the class. + + The desired page index + The desired page size + The total of items in the data source. + + + + Constructs a Page using the specified parameters + + The whole set + The desired page index + The desired page size + + + + Initializes a new instance of the class. + + The sliced list. + The desired page index + The desired page size + The total of items (not in the list, but on the original source). + + + + Populates the sliced view of the whole set + + Index to start to + Last index + Source set + + + + Creates an enumerator for the + sliced set + + An enumerator instance + + + + Represents the sliced data and offers + a few read only properties to create a pagination bar. + + + + + Initializes a new instance of the class. + + The list. + The cur page. + Size of the page. + + + + Returns a enumerator for the contents + of this page only (not the whole set) + + Enumerator instance + + + + Represents the sliced data and offers + a few read only properties to create a pagination bar. + + + + + Initializes a new instance of the class. + + The list. + The cur page. + Size of the page. + The total. + + + + Returns a enumerator for the contents + of this page only (not the whole set) + + Enumerator instance + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Pendent + + + + + Pendent + + + + + DynamicDispatch support is an infrastructure + that mimics a dynamic language/environment. + It is not finished but the idea is to allow + plugins to add operations to the generators. + + + + + Populates the available methods. + + The generator methods. + The methods. + + + + Determines whether [is generator method] [the specified method]. + + The method. + + true if [is generator method] [the specified method]; otherwise, false. + + + + + Dispatches the specified method. + + The method. + The args. + + + + + Gets the generator methods. + + The generator methods. + + + + Collects the public methods + + + + + Initializes a new instance of the class. + + The request context + + + + Inserts a content snippet relative to the element specified by the + + The supported positions are + Top, After, Before, Bottom + + + The position to insert the content relative to the element id + The target element id + Defines what to render + + The following example uses nvelocity syntax: + + $page.InsertHtml('Bottom', 'messagestable', "%{partial='shared/newmessage.vm'}") + + + + + + Replaces the content of the specified target element. + + The target element id + Defines what to render + + The following example uses nvelocity syntax: + + $page.ReplaceHtml('messagediv', "%{partial='shared/newmessage.vm'}") + + + + + + Replaces the entire target element -- and not only its innerHTML -- + by the content evaluated. + + The target element id + Defines what to render + + The following example uses nvelocity syntax: + + $page.Replace('messagediv', "%{partial='shared/newmessage.vm'}") + + + + + + Shows the specified elements. + + The elements ids. + + The elements must exist. + + + The following example uses nvelocity syntax: + + $page.Show('div1', 'div2') + + + + + + Hides the specified elements. + + The elements ids. + + The elements must exist. + + + The following example uses nvelocity syntax: + + $page.Hide('div1', 'div2') + + + + + + Toggles the display status of the specified elements. + + The elements ids. + + The elements must exist. + + + The following example uses nvelocity syntax: + + $page.Toggle('div1', 'div2') + + + + + + Remove the specified elements from the DOM. + + The elements ids. + + The elements must exist. + + + The following example uses nvelocity syntax: + + $page.Remove('div1', 'div2') + + + + + + Shows a JS alert + + The message to display. + + The following example uses nvelocity syntax: + + $page.Alert('You won a Mercedez') + + + + + + Redirects to an url using the location.href. + This is required as most ajax libs don't care for the redirect status + in the http reply. + + The URL. + + The following redirects to a static page + + $page.RedirectTo('about.aspx') + + + The following redirects using the + + + $page.RedirectTo("%{controller='Home',action='index'}") + + + + + + Re-apply Behaviour css' rules. + + + Only makes sense if you are using the Behaviour javascript library. + + + + + Generates a call to a scriptaculous' visual effect. + + The effect name. + The target element. + The optional options. + + + The following example uses nvelocity syntax: + + $page.VisualEffect('ToggleSlide', 'myelement') + + + This is especially useful to show which elements + where updated in an ajax call. + + + $page.ReplaceHtml('mydiv', "Hey, I've changed") + $page.VisualEffect('Highlight', 'mydiv') + + + + + + Generates a call to a scriptaculous' drop out visual effect. + + The target element. + The optional options. + + + + + Assigns a javascript variable with the expression. + + The target variable + The right side expression + + The following example uses nvelocity syntax: + + $page.Assign('myvariable', '10') + + + Which outputs: + + + myvariable = 10; + + + With strings you can escape strings: + + + $page.Assign('myvariable', '\'Hello world\'') + + + Which outputs: + + + myvariable = 'Hello world'; + + + + + + Declares the specified variable as null. + + The variable name. + + + + + Calls the specified function with the optional arguments. + + The function name. + The arguments. + + The following example uses nvelocity syntax: + + $page.call('myJsFunctionAlreadyDeclared', '10', "'message'", $somethingfrompropertybag, $anothermessage.to_squote) + + + Which outputs: + + + myJsFunctionAlreadyDeclared(10, 'message', 1001, 'who let the dogs out?') + + + + + + Outputs the content using the renderOptions approach. + + If the renderOptions is a string, the content is escaped and quoted. + + + If the renderOptions is a dictionary, we extract the key partial + and evaluate the template it points to. The content is escaped and quoted. + + + The render options. + + + The following example uses nvelocity syntax: + + $page.Call('myJsFunction', $page.render("%{partial='shared/newmessage.vm'}") ) + + + Which outputs: + + + myJsFunction('the content from the newmessage partial view template') + + + + + + Writes the content specified to the generator instance + + The content. + + This is for advanced scenarios and for the infrastructure. Usually not useful. + + + + + Writes the content specified to the generator instance + + The content. + + This is for advanced scenarios and for the infrastructure. Usually not useful. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Creates a generator for a collection. + + The root expression. + + + + + Creates a generator for an element. + + The root expression. + + + + + Records the specified line on the generator. + + The gen. + The line. + + + + Builds the JS arguments. + + The args. + + + + + Replaces the tail by period. + + The generator. + + + + Removes the tail. + + The generator. + + + + Gets the generator methods. + + The generator methods. + + + + Gets the js lines. + + The js lines. + + + + Implementation of + + + + + Collects the public methods + + + + + Initializes a new instance of the class. + + The generator. + The root + + + + Gets the parent generator. + + The parent generator. + + + + Gets the generator methods. + + The generator methods. + + + + Implementation for the + + + + + Collects the public methods + + + + + Initializes a new instance of the class. + + The generator. + The root. + + + + Replaces the content of the element. + + Defines what to render + + The following example uses nvelocity syntax: + + $page.el('elementid').ReplaceHtml("%{partial='shared/newmessage.vm'}") + + + + + + Replaces the entire element's content -- and not only its innerHTML -- + by the content evaluated. + + Defines what to render + + The following example uses nvelocity syntax: + + $page.el('messagediv').Replace("%{partial='shared/newmessage.vm'}") + + + + + + Gets the parent generator. + + The parent generator. + + + + Gets the generator methods. + + The generator methods. + + + + The SetOperation exposes an that + extracts information from the attributes and creates a proper configured + Iterator. + + It is shared by a handful of MonoRail operations related to sets. + + + + + + Combines a group of well thought rules to create + an instance. + + + + The parameters read from the are + + + + value + The property name used to extract the value + + + text + The property name used to extract the display text + + + textformat + A format rule to apply to the text + + + valueformat + A format rule to apply to the value + + + suffix + If the types on both sets are different, + the suffix specifies a different target property + + + sourceProperty + + If the types on both sets are different, + the sourceProperty identifies a different source property to extract the value from. + + + + + + + + The initial selection. + The data source. + The attributes. + + + + + Represents a set element + + + + + Initializes a new instance of the class. + + The item. + The value. + The text. + if set to true [is selected]. + + + + Gets the item. + + The item. + + + + Gets the value. + + The value. + + + + Gets the text. + + The text. + + + + Gets a value indicating whether this instance is selected. + + + true if this instance is selected; otherwise, false. + + + + + Base class for set iterators + + + + + source type + + + + + Value getter for value + + + + + Value getter for text + + + + + Format rule for text + + + + + Format rule for value + + + + + Source enumerator + + + + + Initializes a new instance of the class. + + The type. + The data source. + if set to true [empty value case]. + The value property. + The text property. + The text format. + The value format. + + + + Formats the text. + + The value to be formatted. + The format to apply. + + + + Creates the item representation. + + The current. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the target suffix. + + The target suffix. + + + + Gets the current element in the collection. + + + The current element in the collection. + The enumerator is positioned before the first element of the collection or after the last element. + + + + Used for empty/null datasources + + + + + Single instance for the iterator. + + + + + Creates the item representation. + + The current. + + + + + Gets the target suffix. + + The target suffix. + + + + Simple iterator + + + + + Initializes a new instance of the class. + + The type. + The data source. + The value property. + The text property. + The text format. + The value format. + The custom suffix. + + + + Creates the item representation. + + The current. + + + + + Gets the target suffix. + + The target suffix. + + + + Iterator for sets type same type + + + + + Initializes a new instance of the class. + + The type. + The initial selection. + The data source. + if set to true [empty value case]. + The value property. + The text property. + The text format. + The value format. + if set to true [is initial selection A set]. + + + + Creates the item representation. + + The current. + + + + + Gets the target suffix. + + The target suffix. + + + + Iterator for different types on the set + + + + + Initializes a new instance of the class. + + Initial type of the selection. + Type of the data source. + The initial selection. + The data source. + The source property. + The value property. + The text property. + The text format. + The value format. + if set to true [is initial selection A set]. + + + + Creates the item representation. + + The current. + + + + + Gets the target suffix. + + The target suffix. + + + + Provides methods for working with strings and grammar. At the moment, + it contains the ToSentence overloads. + + + + + Default word connector + + + + + Converts a camelized text to words. For instance: + FileWriter is converted to File Writer + + Content in pascal case + + + + + Builds a phrase listing a series of strings with with proper sentence semantics, + i.e. separating elements with ", " and prefacing the last element with + the specified . + + Collection with items to use in the sentence. + String to preface the last element. + String suitable for use in a sentence. + Calling ToSentence( elements, "y" ) results in: + + element1, element2 y element3 + + If is not an array of strings, each element will be + converted to string through . + + This example shows how to use ToSentence: + + $TextHelper.ToSentence( elements, "y" ) + + + + + + Builds a phrase listing a series of strings with with proper sentence semantics, + i.e. separating elements with ", " and prefacing the last element with + " and ". + + Collection with items to use in the sentence. + True to skip the comma before the connector, false to include it. + String suitable for use in a sentence. + Calling ToSentence( elements, false ) results in: + + element1, element2, and element3 + + If is not an array of strings, each element will be + converted to string through . + + This example shows how to use ToSentence: + + $TextHelper.ToSentence( elements, false ) + + + + + + Builds a phrase listing a series of strings with with proper sentence semantics, + i.e. separating elements with ", " and prefacing the last element with + " and ". + + Collection with items to use in the sentence. + String suitable for use in a sentence. + Calling ToSentence( elements ) results in: + + element1, element2 and element3 + + If is not an array of strings, each element will be + converted to string through . + + This example shows how to use ToSentence: + + $TextHelper.ToSentence( elements ) + + + + + + Builds a phrase listing a series of strings with with proper sentence semantics, + i.e. separating elements with ", " and prefacing the last element with + the specified . + + Collection with items to use in the sentence. + String to preface the last element. + True to skip the comma before the , false to include it. + String suitable for use in a sentence. + Calling ToSentence( elements, "y", false ) results in: + + element1, element2, y element3 + + If is not an array of strings, each element will be + converted to string through . + + This example shows how to use ToSentence: + + $TextHelper.ToSentence( elements, "y", false ) + + + + + + Builds a phrase listing a series of strings with with proper sentence semantics, + i.e. separating elements with ", " and prefacing the last element with + the specified . + + Array of strings with items to use in the sentence. + String to preface the last element. + True to skip the comma before the , false to include it. + String suitable for use in a sentence. + Calling ToSentence( elements, "y", false ) results in: + + element1, element2, y element3 + + + This example shows how to use ToSentence: + + $TextHelper.ToSentence( elements, "y", false ) + + + + + + Shortens a text to the specified length and wraps it into a span- + element that has the title-property with the full text associated. + This is convenient for displaying properties in tables that might + have very much content (desription fields etc.) without destroying + the table's layout. + Due to the title-property of the surrounding span-element, the full + text is displayed in the browser while hovering over the shortened + text. + + The text to display + The maximum number of character to display + The generated HTML + + + + Helper that allows the creation of urls using a dictionary. + + + For more information see + + + + + + By default the urlhelper sets the encode to true, so the html generated is valid xhtml. + + + + + + + Outputs a path constructed using the specified parameters. + + + + + + The following code uses nvelocity syntax: + + + $url.for("%{action='Save'}") + + + outputs + + /ControllerNameFromContext/Save.extension_configured + + + $url.for("%{action='Edit',querystring='id=1'}") + + + outputs + + /ControllerNameFromContext/Edit.extension_configured?id=1 + + + The parameters. + + + + + Outputs an anchor element constructed using the specified parameters. + + + + + + The following code uses nvelocity syntax: + + + $url.link('my link', "%{action='Save'}") + + + outputs + + my link ]]> + + + $url.link('my link', "%{action='Edit',querystring='id=1'}") + + + outputs + + my link ]]> + + + The anchor text. + The parameters. + + + + + Outputs an anchor element constructed using the specified parameters. + + + + + + The following code uses nvelocity syntax: + + + $url.link('my link', "%{action='Save'}", "%{class='buttonlink'}") + + + outputs + + my link ]]> + + + + The anchor text. + The parameters. + The anchor element attributes. + + + + + Outputs a button element constructed using the specified parameters. + + + + + + The following code uses nvelocity syntax: + + + $url.ButtonLink('my link', "%{action='Save'}") + + + outputs + + my link ]]> + + + + The button text. + The parameters. + + + + + Outputs a button element constructed using the specified parameters. + + + + + + The following code uses nvelocity syntax: + + + $url.ButtonLink('my link', "%{action='Save'}", "%{class='buttonlink'}") + + + outputs + + my link ]]> + + + + The button text. + The parameters. + The button element attributes. + + + + + Helper that provides client-side validation. + + The javascript core lib is extension of Peter Bailey's + fValidate(http://www.peterbailey.net/fValidate/). + + + + Constructor. + + + + + Automatic Script installer. + + + + + + Installs the scripts. + + The locale. + + + + + Configure the submit and validation options. + + + + + Configure the submit and validation options. + + True for submit confirmation. Otherwise, false. + True for submit buttons disabling. + True for error grouping. + representing the error mode. + + + + Returns the form validation function. + + + + + + Returns the form validation function. + + Javascript expression that return the desired form. + + + + + Returns the form validation function where you can override the options: + + + The options that can be overriden: + confirm (bool), disable (bool), groupError (bool), errorMode (int) + + Javascript expression that return the desired form. + Custom options + + + + + Provide useful helpers to be used in a layout view + or in the wizards steps views. + + + + + Returns true if the current wizard + flow has a next step. + + + + + + Returns true if the current wizard + flow has an accessible previous step. + + + This will only return true if not + the first step + + + + + This method has three overloads. + + Creates an anchor tag (link) to the specified step. + + <a href="/page2.rails">linkText</a> + + + The label for the step + The WizardStepPage to link to + + + + + Creates an anchor tag (link) to the specified step. + + <a href="/page2.rails">linkText</a> + + + The label for the step + The WizardStepPage to link to + Object to use for the action ID argument. + + + + + Creates an anchor tag (link) to the specified step. + + <a href="/page2.rails">linkText</a> + + + The label for the step + The WizardStepPage to link to + Object to use for the action ID argument. + Additional attributes for the a tag. + + + + This method has four overloads. + + Creates an anchor tag (link) to the next step. + + <a href="/page2.rails">linkText</a> + + + + This helper assumes there is a next step. It's advised + that you use before calling this + + The label for the link + + + + + Creates an anchor tag (link) to the next step. + + <a href="/page2.rails">linkText</a> + + + + This helper assumes there is a next step. It's advised + that you use before calling this + + The label for the link + Additional attributes for the a tag. + + + + + Creates an anchor tag (link) with an id attribute to the next step. + + <a href="/page2.rails?Id=id">linkText</a> + + + + This helper assumes there is a next step. It's advised + that you use before calling this + + The label for the link + Object to use for the action ID argument. + + + + + Creates an anchor tag (link) with an id attribute to the next step. + + <a href="/page2.rails?Id=id">linkText</a> + + + + This helper assumes there is a previous step. It's advised + that you use before calling this + + The label for the link + Object to use for the action ID argument. + Additional attributes for the a tag. + + + + This method has four overloads. + + Creates an anchor tag (link) to the previous step. + + <a href="/page2.rails">linkText</a> + + + + This helper assumes there is a previous step. It's advised + that you use before calling this + + The label for the link + + + + + Creates an anchor tag (link) to the previous step. + + <a href="/page2.rails">linkText</a> + + + + This helper assumes there is a previous step. It's advised + that you use before calling this + + The label for the link + Additional attributes for the a tag. + + + + + Creates an anchor tag (link) with an id attribute to the previous step. + + <a href="/page2.rails?Id=id">linkText</a> + + + + This helper assumes there is a previous step. It's advised + that you use before calling this + + The label for the link + Object to use for the action ID argument. + + + + + Creates an anchor tag (link) with an id attribute to the previous step. + + <a href="/page2.rails?Id=id">linkText</a> + + + + This helper assumes there is a previous step. It's advised + that you use before calling this + + The label for the link + Object to use for the action ID argument. + Additional attributes for the a tag. + + + + + Returns the name of the previous step + + + + + Returns the name of the next step + + + + + MonoRail Helper that delivers Zebda validation capabilities. + + + + + Renders a zebda library inside a script tag. + + + + + Holds the meta information for a specific action + + + + + Common meta descriptor that represents configuration share by + controllers and actions. + + + + + Gets or sets the layout descriptor. + + The layout. + + + + Gets or sets the rescues descriptors. + + The rescues. + + + + Gets or sets the resources descriptors. + + The resources. + + + + Gets or sets the skip rescue associated with this action. + + The skip rescue. + + + + Gets or sets the accessible through definition associated with this action. + + The accessible through. + + + + Gets the skip filters associated with this action. + + The skip filters. + + + + Gets the cache configurers associated with this action. + + The cache configurers. + + + + Gets or sets the transform filters associated with this action. + + The transform filters. + + + + Represents the configuration associated with a . + + + + + Initializes a new instance of the class. + + Type of the controller. + The name of the controller. + The area associated with the controller. + + + + Gets the type of the controller. + + The type of the controller. + + + + Gets the controller's name. + + The name. + + + + Gets the controller's area. + + The area. + + + + Holds all meta information a controller might + expose, so the attributes are collected only once. + This approach translates into a huge performance boost. + + + + + Initializes a new instance of the class. + + + + + Gets an action descriptor with information about an action. + + The action method. + + + + + Gets the actions. + + The actions. + + + + Gets the ajax actions. + + The ajax actions. + + + + Gets or sets the default action. + + The default action. + + + + Gets or sets the helpers. + + The helpers. + + + + Gets or sets the filters. + + The filters. + + + + Gets the scaffoldings. + + The scaffoldings. + + + + Gets the action providers. + + The action providers. + + + + Gets or sets the transform filters. + + The transform filters. + + + + Represents the meta information and type of + an implementation of . + + + + + Initializes a new instance of the class. + + Type of the filter. + The flag that defines when it should run. + The execution order. + The attribute. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Gets the type of the filter. + + The type of the filter. + + + + Gets the flag that defines when it should run. + + The when. + + + + Gets the execution order. + + The execution order. + + + + Gets or sets the filter instance. + + The filter instance. + + + + Gets or sets the attribute. + + The attribute. + + + + Represents the information about a Helper class + associated with a + + + + + Initializes a new instance of the class. + + Type of the helper. + + + + Initializes a new instance of the class. + + Type of the helper. + A custom name to use to access the helper from the view. + + + + Gets the helper name. + + The name. + + + + Gets the type of the helper. + + The type of the helper. + + + + Represents a layout configuration + + + + + Initializes a new instance of the class. + + Name of the layout. + + + + Gets the name of the layout. + + The name of the layout. + + + + Represents a rescue configuration + + + + + Initializes a new instance of the class. + + Name of the rescue view. + Type of the exception it is associated with. + + + + Gets the name of the rescue view. + + The name of the view. + + + + Gets the type of the exception this rescue is associated with. + + The type of the exception. + + + + Represents a resource configuration associated with a controller. + + + + + Initializes a new instance of the class. + + Type that has the resource. + The name. + Name of the resource. + Name of the culture. + Name of the assembly. + + + + Gets the type that has the resource. + + The type that has the resource. + + + + Gets the name. + + The name. + + + + Gets the name of the resource. + + The name of the resource. + + + + Gets the name of the culture. + + The name of the culture. + + + + Gets the name of the assembly. + + The name of the assembly. + + + + Represents the meta information and type of + an implementation of . + + + + + Initializes a new instance of the class. + + Type of the transform filter. + The execution order. + The attribute. + + + + Gets the attribute. + + The attribute. + + + + Gets the type of the transform filter. + + The type of the transform filter. + + + + Gets the execution order. + + The execution order. + + + + Creates from attributes + associated with the + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the controller + + + + + Base interface for providers + + + + + Implementors should collect the filter information + and return descriptors instances, or an empty array if none + was found. + + The controller type + An array of + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Implementors should collect the filter information + and return descriptors instances, or an empty array if none + was found. + + The controller type + + An array of + + + + + Creates from attributes + associated with the + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the controller + + + + + Implementors should collect the helper information + and return descriptors instances, or an empty array if none + was found. + + The controller type + An array of + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Implementors should collect the helper information + and return descriptors instances, or an empty array if none + was found. + + The controller type + + An array of + + + + + Creates from attributes + associated with the and its actions + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the controller + + + + + Implementors should collect the layout information + and return a descriptor instance, or null if none + was found. + + The controller type or action (MethodInfo) + An instance + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Implementors should collect the layout information + and return a descriptor instance, or null if none + was found. + + The controller type or action (MethodInfo) + + An instance + + + + + Creates from attributes + associated with the + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the controller + + + + + Implementors should collect the rescue information + and return descriptors instances, or an empty array if none + was found. + + The controller type + An array of + + + + Implementors should collect the rescue information + and return descriptors instances, or an empty array if none + was found. + + The action (MethodInfo) + An array of + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Collects the rescues. + + The type. + + + + + Implementors should collect the rescue information + and return descriptors instances, or an empty array if none + was found. + + The action (MethodInfo) + + An array of + + + + + Creates from attributes + associated with the + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the controller + + + + + Implementors should collect the resource information + and return descriptors instances, or an empty array if none + was found. + + The controller or action (MethodInfo) + An array of + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Collects the resources. + + The member info. + + + + + Creates from attributes + associated with the + + + + + Defines the contract to an implementation + that wish to create . + + + The default implementation creates the descriptors + based on associated + with the actions on the controller. + + + + + Implementors should collect the transformfilter information + and return descriptors instances, or an empty array if none + was found. + + The action (MethodInfo) + An array of + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Implementors should collect the transformfilter information + and return descriptors instances, or an empty array if none + was found. + + The action (MethodInfo) + + An array of + + + + + Helper class to store the context to be used + for the test cases (that use the ASP.Net Runtime) + + + + + Initializes a new instance of the class. + + + + + Sets the context. + + The context. + + + + Gets the context. + + The context. + + + + Util class that deals with action providers + + + + + Registers the actions on the controller. + + The controller. + + + + Represents a source of views in an assembly resource. + + + + + Initializes a new instance of the class. + + Name of the assembly. + The _namespace. + + + + Determines whether the assembly has the specified template. + + Name of the template. + + true if the specified exists on the assembly; otherwise, false. + + + + + Gets the template stream. + + Name of the template. + + + + + Collects the views on the assembly resource. + + Name of the dir. + The views. + + + + Normalizes the name of the template. + + Name of the template. + + + + + Registers the entries. + + + + + Gets the name of the assembly. + + The name of the assembly. + + + + Gets the namespace. + + The namespace. + + + + Code shared by Helpers/Controllers/Others + + + + + Obtains the entry. + + The attributes. + The key. + The generated form element + + + + Obtains the entry. + + The attributes. + The key. + The default value. + the entry value or the default value + + + + Obtains the entry and remove it if found. + + The attributes. + The key. + The default value. + the entry value or the default value + + + + Obtains the entry and remove it if found. + + The attributes. + The key. + the entry value or null + + + + Obtains the entry and remove it if found. + + The attributes. + The key. + the entry value or null + + + + Merges with placing results in + . + + The user options. + The default options. + + All and in + are copied to . Entries with the same in + and are skipped. + + + + + Builds a query string. + + + Supports multi-value query strings, using any + as a value. + + The parameters + The server utility instance + if true, the separation of entries will be encoded. + + + + Builds a query string. + + + Supports multi-value query strings, using any + as a value. + + + IDictionary dict = new Hashtable(); + dict.Add("id", 5); + dict.Add("selectedItem", new int[] { 2, 4, 99 }); + string querystring = BuildQueryString(dict); + // should result in: "id=5&selectedItem=2&selectedItem=4&selectedItem=99&" + + + + The parameters + The server utility instance + if true, the separation of entries will be encoded. + + + + Collection related generator + + + Not really implemented. + + + + + Collection generator instance + + + + + Parent generator instance + + + + + Initializes a new instance of the class. + + The generator. + + + + Defines the behavior when a property is read + + Property name. + value back to the template + + + + Invokes the specified method. + + The method name. + The method arguments. + value back to the template + + + + Operations related to an element + + + + + Element generator instance + + + + + Parent Generator instance + + + + + Initializes a new instance of the class. + + The generator. + + + + Generates a get statement + + Name of the prop. + + + + Dispatches the invocation (late bound) + + The method. + The args. + + + + + Abstract class that contains the shared logic of JS Generation, separated from + the various view engines implementations + + + + + The generator instance + + + + + Initializes a new instance of the class. + + The generator. + + + + Executes an operation (totally late bound) + + The method. + The args. + + + + + Creates a null generator. + + + + + + Creates a JS collection generator. + + The collection generator. + + + + + Creates a JS element generator. + + The element generator. + + + + + Delegates to the generator + + + A that represents the current . + + + + + Simple strong typed dictionary for IResource instances. + + + + + Adds the specified key. + + The key. + The resource. + + + + Removes the specified key. + + The key. + + + + Determines whether the resource contains the specified key. + + The key. + + true if the resource contains it; otherwise, false. + + + + + Clears this instance. + + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in array at which copying begins. + array is null. + index is less than zero. + array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. + The type of the source cannot be cast automatically to the type of the destination array. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets or sets the with the specified key. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets the values. + + The values. + + + + Gets the keys. + + The keys. + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + Simple facade that provides the IResource interface to a + ResourceManager instance. + + + + + Dictates the contract for resources that are publishable + through the PropertyBag context. + + + + + Returns the object linked to the specific key as a string. + + + + + Returns the object linked to the specific key. + + + + + Returns the object linked to the specific key. + + + + + Initializes a new instance of the class. + + The resource manager. + The culture info. + + + + Returns the object linked to the specific key. + + + + + + + Returns the object linked to the specific key as a string. + + + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns the object linked to the specific key. + + + + + + Exception to be used by scaffolding implementations + + + + + Base exception for monorail exceptions + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The args. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents the tokenized information from an Url. + + + + + Initializes a new instance of the class. + + The area. + The controller. + The action. + + + + Initializes a new instance of the class. + + The domain (host). + The subdomain (first token on the domain). + Protocol (http/https) + The port. + The raw URL. + The area, or empty. + The controller name. + The action name. + The file extension. + The application virtual dir. + + + + Gets the app virtual dir. + + The app virtual dir. + + + + Gets the port. + + The port. + + + + Gets the domain. + + The domain. + + + + Gets the subdomain. + + The subdomain. + + + + Gets the URL raw. + + The URL raw. + + + + Gets the area. + + The area. + + + + Gets the controller. + + The controller. + + + + Gets the action. + + The action. + + + + Gets the protocol. + + The protocol. + + + + The URL extension, without the leading dot. + + + + + Represents a problem during the Url information extraction. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents a view engine configuration + + + + + Initializes a new instance of the class. + + The engine. + if set to true [XHTML rendering]. + + + + Gets or sets the View Engine type. + + The View Engine type. + + + + Gets or sets a value indicating whether + the view engine should send the content using the xhtml mime type. + + true if xhtml mime type should be used; otherwise, false. + + + + Utility class for wizard related queries and operations + + + + + Constructs the wizard namespace. + + The controller. + + + + + Determines whether the current wizard has a previous step. + + The controller. + + true if has previous step; otherwise, false. + + + + + Determines whether the current wizard has a next step. + + The controller. + + true if has next step; otherwise, false. + + + + + Gets the name of the previous step. + + The controller. + + + + + Gets the name of the next step. + + The controller. + + + + + Registers the current step info/state. + + The controller. + Name of the action. + + + + Registers the current step info/state. + + The controller. + Index of the step. + Name of the step. + + + + Provides a service which generates a JavaScript block, that + can be used to call Ajax actions on the controller. + + + + + Generates an AJAX JavaScript proxy for a given controller. + + The context of the current request + Name of the javascript proxy object + Controller which will be target of the proxy + area which the controller belongs to + + + + Provides a service which generates a JavaScript block, that + can be used to call Ajax actions on the controller. This JavaScript will + use the Prototype syntax. + + + + + The logger instance + + + + + Initializes a new instance of the class. + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Generates an AJAX JavaScript proxy for a given controller. + + The context of the current request + Name of the javascript proxy object + Controller which will be target of the proxy + area which the controller belongs to + + + + Gets the name of the parameter. + + The parameterInfo. + + + + + Gets the property value. + + The obj. + Name of the prop. + + + + + Gets the single attribute. + + The obj. + Type of the attribute. + if set to true [inherit]. + + + + + Toes the camel case. + + The value. + + + + + Utilities methods to inspect the controller Type + and gathers its name and area. + + + + + Creates a based on the conventions + and possible attributes found for the Controller Type specified + + The controller type + A controller descriptor + + + + Obtains the name of the controller. + + The name. + The controller. + + + + + Strips the specified name. + + The name. + + + + + Base implementation of + using the to build an hierarchy + of controllers and the areas they belong to. + + + + + + Depicts the contract the engine has + to perform the creation and disposal of + instances. + + + + + Implementors should perform their logic to + return a instance of . + If the can not be found, + it should return null. + + + + + + + Implementors should perform their logic + to release the instance + and its resources. + + + + + + The controller tree. A binary tree that contains + all controllers registered + + + + + The logger instance + + + + + Initializes an AbstractControllerFactory instance + + + + + Invoked by the framework in order to initialize the state + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Implementors should perform their logic to + return a instance of . + If the can not be found, + it should return null. + + + + + + + Implementors should perform their logic + to release the instance + and its resources. + + + + + + Register built-in controller that serve static files + + + + + Creates the controller instance. + + The area. + The name. + + + + + Gets the tree. + + The tree. + + + + Base implementation for + + + + + Depicts the contract used by the view engine + to obtain implementations of . + + + + + Creates the specified name. + + The name. + + + + + The logger instance + + + + + Initializes a new instance of the class. + + + + + Invoked by the framework in order to initialize the state + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Creates an instance of the requested + + The view component's name + The view component instance + + + + Resolves the type. + + The name. + + + + + Releases a ViewComponent instance + + + Not currently used + + + + + + Registers viewcomponents provided by default. + + + + + + + Registers a view component type. + + The view components's name + The view component's which must extend + + + + Gets the view component registry. + + + + + + Implementors should return a reference to + the current view engine. + + + + + Simple implementation of + that relies on ASP.Net Cache + + + + + Depicts the contract for cache provider. Was + created to be used with providers like memcached. + + + + + Determines whether the specified key is on the cache. + + The key. + + true if the cache has the key; otherwise, false. + + + + + Gets the cache item by the specified key. + + The key. + + + + + Stores the cache item by the specified key. + + The key. + The data. + + + + Deletes the cache item by the specified key. + + The key. + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Determines whether the specified key is on the cache. + + The key. + + true if the cache has the key; otherwise, false. + + + + + Gets the cache item by the specified key. + + The key. + + + + + Stores the cache item by the specified key. + + The key. + The data. + + + + Deletes the cache item by the specified key. + + The key. + + + + Gets the current context. + + + + + + Constructs and caches all collected information + about a and its actions. + + + + + + Defines the contract for implementations that should + collect from one or more sources the meta information that + dictates the behavior and the actions it exposes. + + + + + Builds the descriptor. + + The controller. + + + + + Builds the descriptor. + + Type of the controller. + + + + + The logger instance + + + + + Used to lock the cache + + + + + Services the specified service provider. + + The service provider. + + + + Constructs and populates a . + + + This implementation is also responsible for caching + constructed meta descriptors. + + + + + Constructs and populates a . + + + This implementation is also responsible for caching + constructed meta descriptors. + + + + + Builds the for the specified controller type + + Type of the controller. + + + + + Collects the actions. + + Type of the controller. + The desc. + + + + Collects the action level attributes. + + The descriptor. + + + + Collects the action attributes. + + The method. + The descriptor. + + + + Collects the skip rescue. + + The action descriptor. + The method. + + + + Collects the accessible through. + + The action descriptor. + The method. + + + + Collects the skip filter. + + The action descriptor. + The method. + + + + Collects the resources. + + The desc. + The member info. + + + + Collects the transform filter. + + The action descriptor. + The method. + + + + Gets the real controller type, instead of the proxy type. + + + Workaround for DYNPROXY-14 bug. See: http://support.castleproject.org/browse/DYNPROXY-14 + + + + + Collects the class level attributes. + + Type of the controller. + The descriptor. + + + + Collects the default action. + + The descriptor. + Type of the controller. + + + + Collects the scaffolding. + + The descriptor. + Type of the controller. + + + + Collects the dynamic action. + + The descriptor. + Type of the controller. + + + + Collects the helpers. + + The descriptor. + Type of the controller. + + + + Collects the filters. + + The descriptor. + Type of the controller. + + + + Collects the layout. + + The descriptor. + The member info. + + + + Collects the rescues. + + The descriptor. + The member info. + + + + Collects the rescues. + + The descriptor. + The type. + + + + Collects the cache configures. + + The descriptor. + The member info. + + + + This implementation + is used to sort the filters based on their Execution Order. + + + + + Initializes a new instance of the class. + + + + + Compares the specified left. + + The left. + The right. + + + + + Gets the instance. + + The instance. + + + + This implementation + is used to sort the transformfilters based on their Execution Order. + + + + + Initializes a new instance of the class. + + + + + Compares the specified left. + + The left. + The right. + + + + + Gets the instance. + + The instance. + + + + Standard implementation of . + It inspects assemblies looking for concrete classes + that extend . + + + + + The logger instance + + + + + Initializes a new instance of the class. + + + + + Invoked by the framework in order to initialize the state + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Loads the assembly and inspect its public types. + + + + + + Inspect the assembly's public types. + + + + + Registers the controller. + + The descriptor. + + + + Default implementation of + + + + + Depicts the contract for a + factory. + + + + + Creates an executor instance + + An + implementation + Controller instance (cannot be null) + Request context (cannot be null) + + + + Creates an executor instance + + An + implementation + + + + Services the specified provider. + + The provider. + + + + Default implementation of . + Represents an binary tree of registered controllers. + + It is used by the controller factory to resolve a controller instance + based on the specified area (which is optional) and controller name + + + + + + + + Represents an binary tree of registered controllers. + + It is used by the controller factory to resolve a controller instance + based on the specified area (which is optional) and controller name + + + + + + + Register a controller on the tree. If the specified + area name matches the current node, the controller is + register on the node itself, otherwise on the right or + on the left node. + + + Note that the controller is an object. That allows + different implementation of a controller factory to register + different representation of what a controller is (a name, a descriptor etc) + + The area name, or String.Empty + The controller name + The controller representation + + + + Returns a controller previously registered. + + The area name, or String.Empty + The controller name + The controller representation or null + + + + The area the controller belongs to. + The default area is String.Empty + + + + + A dictionary of controllers that belongs to this node (area) + + + + + The controllers node on the left + + + + + The controllers node on the right + + + + + Constructs a ControllerTree with an empty area + + + + + Constructs a ControllerTree specifying an area + + + + + Register a controller on the tree. If the specified + area name matches the current node, the controller is + register on the node itself, otherwise on the right or + on the left node. + + + Note that the controller is an object. That allows + different implementation of a controller factory to register + different representation of what a controller is (a name, a descriptor etc) + + The area name, or String.Empty + The controller name + The controller representation + + + + Returns a controller previously registered. + + The area name, or String.Empty + The controller name + The controller representation or null + + + + Standard implementation of . + + + + + Depicts the contract used by the engine + to obtain implementations of . + + + + + Creates the specified filter type. + + Type of the filter. + + + + + Releases the specified filter. + + The filter. + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Creates a filter instance + + The filter's type + The filter instance + + + + Releases a filter instance + + The filter instance + + + + Standard implementation of + + + + + Depicts the contract used by the engine + to obtain implementations of . + + + + + Creates the specified descriptor. + + The descriptor. + The app assembly. + + + + + Releases the specified resource. + + The resource. + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Creates an implementation of + based on the descriptor. + + + + + + + + + + Releases a resource + + + + + + Resolves the culture by name. + + The name. + + + + + Resolves the assembly. + + The name. + The assembly. + + + + + Standard implementation of . + + + + + Depicts the contract used by the engine + to obtain implementations of . + + + + + Creates the specified transform filter type. + + Type of the transform filter. + The base stream. + + + + + Releases the specified transform filter. + + The transform filter. + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Creates a transformfilter instance + + The transformfilter's type + The filter's basestream to write to + The transformfilter instance + + + + Releases a transformfilter instance + + The filter instance + + + + Default implementation of + + + The property defines whether the builder should output + file extension. This might be handy to use in combination with a url rewrite strategy + + + If you want to create a custom urlbuilder, you can extend this one and override + the + + + + + + + + THe UrlBuilder service centralizes the url generation used by the whole + framework including redirect urls, urls generated by helpers and so on. + It offers a central place to change MonoRail behavior on how to deal with urls. + + + + + Builds the URL using the current url as contextual information and a parameter dictionary. + + Common parameters includes area, controller and action. + + + The current Url information. + The parameters. + + + + + Builds an URL using the controller name and action name. + + The current Url information. + The controller. + The action. + + + + + Builds an URL using the controller name, action name, and a querystring dictionary. + + The current Url information. + The controller. + The action. + The query string params. + + + + + Builds an URL using the controller name, action name, and a querystring name value collection. + + The current Url information. + The controller. + The action. + The query string params. + + + + + Builds an URL using the area name, controller name and action name. + + The current Url information. + The area. + The controller. + The action. + + + + + Builds an URL using the area name, controller name, action name, and a querystring dictionary. + + The current Url information. + The area. + The controller. + The action. + The query string params. + + + + + Builds an URL using the area name, controller name, action name, and a querystring name value collection. + + The current Url information. + The area. + The controller. + The action. + The query string params. + + + + + Initializes a new instance of the class. + + + + + Services the specified provider. + + The provider. + + + + Builds the URL using the current url as contextual information and a parameter dictionary. + + + + + + Common parameters includes area, controller and action, which outputs + /area/controller/name.extension + + + + Please note that if you dont specify an area or controller name, they will be inferred from the + context. If you want to use an empty area, you must specify area=''. + This is commonly a source of confusion, so understand the following cases: + + + + + UrlInfo current = ... // Assume that the current is area Admin, controller Products and action List + + BuildUrl(current, {action: 'view'}) + // returns /Admin/Products/view.castle + + BuildUrl(current, {controller: 'Home', action: 'index'}) + // returns /Admin/Home/index.castle + + BuildUrl(current, {area:'', controller: 'Home', action: 'index'}) + // returns /Home/index.castle + + + + + The querystring parameter can be a string or a dictionary. It appends a query string to the url: + /area/controller/name.extension?id=1 + + + + The absolute parameter forces the builder to output a full url like + http://hostname/virtualdir/area/controller/name.extension + + + + The encode parameter forces the builder to encode the querystring + /controller/name.extension?id=1&name=John which is required to output full xhtml compliant content. + + + + The current Url information. + The parameters. + + + + + Builds an URL using the controller name and action name. + + The current Url information. + The controller. + The action. + + + + + Builds an URL using the controller name, action name, and a querystring dictionary. + + The current Url information. + The controller. + The action. + The query string params. + + + + + Builds an URL using the controller name, action name, and a querystring name value collection. + + The current Url information. + The controller. + The action. + The query string params. + + + + + Builds an URL using the area name, controller name and action name. + + The current Url information. + The area. + The controller. + The action. + + + + + Builds an URL using the area name, controller name, action name, and a querystring dictionary. + + The current Url information. + The area. + The controller. + The action. + The query string params. + + + + + Builds an URL using the area name, controller name, action name, and a querystring name value collection. + + The current Url information. + The area. + The controller. + The action. + The query string params. + + + + + Internals the build URL. + + The area. + The controller. + The action. + The protocol. + The port. + The domain. + The subdomain. + The app virtual dir. + The extension. + if set to true [absolute path]. + if set to true [apply subdomain]. + The suffix. + + + + + Internals the build URL. + + The area. + The controller. + The action. + The protocol. + The port. + The domain. + The subdomain. + The app virtual dir. + The extension. + if set to true [absolute path]. + if set to true [apply subdomain]. + The suffix. + The base path. + + + + + Internals the build using app virtual dir. + + if set to true [absolute path]. + The action. + if set to true [apply subdomain]. + The app virtual dir. + The area. + The controller. + The domain. + The port. + The protocol. + The subdomain. + + + + + Internals the build URL using base path. + + The action. + The area. + The base path. + The controller. + + + + + Gets or sets a value indicating whether the builder should output an extension. + + true if should use extensions; otherwise, false. + + + + Gets or sets the server utility instance. + + The server util. + + + + Breaks the url into smaller pieces to find out + the requested controller, action and optionally the area. + + It alsos checks for default urls which map a single resource to an area/controller/action + + + + + + Pendent + + + + + Tokenizes the URL. + + The raw URL. + The URI. + if set to true [is local]. + Virtual directory + + + + + Adds the default rule mapping. + + + A defautl rule can associate something like a 'default.castle' + to a controller/action like 'Home/index.castle' + + The URL. + The area. + The controller. + The action. + + + + Services the specified provider. + + The provider. + + + + Tokenizes the URL. + + The raw URL. + The URI. + if set to true [is local]. + Virtual directory + + + + + Extracts the area controller action. + + The raw URL. + The area. + The controller. + The action. + + + + Gets the domain token. + + The domain. + The token index. + + + + + Gets the extension of the requested urls page without the preceding period. + + URL. + The resource file extension on the url (without the period). + + + + Default implementation of + + This implementation looks for concrete types that extend + in an assembly + + + + + + The logger instance + + + + + View engine instance used to initialize the + instance upon creation + + + + + A dictionary of name to ViewComponent + + + + + Constructs a DefaultViewComponentFactory + + + + + Invoked by the framework in order to initialize the state + + + + + Gets the view component registry. + + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Loads the assembly and inspect its public types. + + + + + + Inspect the assembly's public types. + + + + + Implementors should return a reference to + the current view engine. + + + + + + Centralizes the registration and lookup of ViewComponents + + + + + Depicts a contract for viewcomponent registry implementations + + + + + Adds the view component. + + The name. + The type. + + + + Gets the view component. + + The name. + + + + + Adds the view component. + + The name that can be used from the view template. + The type. + + + + Gets the view component. + + The name. + + + + + Normalizes the name. + + The name. + + + + + Gets the details. + + The type. + + + + + The view engine manager sits between MonoRail and all the registered + view engines. It is used to identify the view engine that should handle a + render request and delegates such requests properly. + + + + + Sits between the controller and the view engines (multiples) + to decide which view engine should render a specific content + + + + + Evaluates whether the specified template exists. + + true if it exists + + + + Processes the view - using the templateName + to obtain the correct template, + and using the context to output the result. + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the System.TextWriter. + + Please note that no layout is applied + + + + + + Processes a partial view = using the partialName + to obtain the correct template and writes the + results to the System.TextWriter. + + The output. + The context. + The controller. + The partial name. + + + + Wraps the specified content in the layout using + the context to output the result. + + + + + Initializes a new instance of the class. + + + + + Implementors should perform any initialization logic. + + + + + Services the specified service provider. + + The service provider. + + + + Evaluates whether the specified template exists. + + View template name + true if it exists + + + + Processes the view - using the templateName + to obtain the correct template, + and using the context to output the result. + + + + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the System.TextWriter. + + Please note that no layout is applied + + + + + + + + + + Processes a partial view = using the partialName + to obtain the correct template and writes the + results to the System.TextWriter. + + The output. + The context. + The controller. + The partial name. + + + + Wraps the specified content in the layout using + the context to output the result. + + + + + Finds the existing template. + + Name of the template. + + + + + Contextualizes the view engine. + + The engine. + + + + The view can be informed with an extension. If so, we use it + to discover the extension. Otherwise, we use the view source + to find out the file that exists there, and hence the view + engine instance + + View name + A view engine instance + + + + Associates extensions with the view engine instance. + + The view engine instance + + + + Asserts the template exists. + + Name of the resolved template. + Name of the template. + + + + Default implementation of + + + Will work only during a MonoRail process as it needs a + and a instance to execute. + + + + + Represents the disacoupled service to use + MonoRail's view engine to process email templates. + + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + + Dictionary with parameters + that you can use on the email template + + If true, it will skip the layout + An instance of + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + Context that represents the current request + Controller instance + If true, it will skip the layout + An instance of + + + + The logger instance + + + + + Initializes a new instance of the class. + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + + Dictionary with parameters + that you can use on the email template + + If true, it will skip the layout + An instance of + + + + Creates an instance of + using the specified template for the body + + + Name of the template to load. + Will look in Views/mail for that template file. + + Context that represents the current request + Controller instance + If true, it will skip the layout + An instance of + + + + MonoRail internal email sender service + + + + + Initializes a new instance of the class. + + + + + Services the specified provider. + + The provider. + + + + Sends a message. + + From field + To field + e-mail's subject + message's body + + + + Sends a message. + + Message instance + + + + Sends multiple messages. + + Array of messages + + + + Simple implementation that relies on weak + references in a dictionary + + + + + The logger instance + + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Determines whether the specified key is on the cache. + + The key. + + true if the cache has the key; otherwise, false. + + + + + Gets the cache item by the specified key. + + The key. + + + + + Stores the cache item by the specified key. + + The key. + The data. + + + + Deletes the cache item by the specified key. + + The key. + + + + Exposes methods on top of + that are used by unit tests + + + + + Gets the urls the request was redirected to. + + The redirected to. + + + + Gets the http headers. + + The headers. + + + + Exposes methods on top of + that are used by unit tests + + + + + Exposes the operations that can be performed by s + + + + + Determines whether the current component declaration on the view + has the specified section. + + Name of the section. + + true if the specified section exists; otherwise, false. + + + + + Renders the view specified to the writer. + + The view template name + A writer to output + + + + Renders the component body. + + + + + Renders the body into the specified + + The writer. + + + + Renders the the specified section. + No exception will the throw if the section cannot be found. + + Name of the section. + + + + Renders the the specified section. + No exception will the throw if the section cannot be found. + + Name of the section. + The writer to output the section content. + + + + Gets the name of the component. + + The name of the component. + + + + Gets the writer used to render the view component + + The writer. + + + + Gets the dictionary that holds variables for the + view and for the view component + + The context vars. + + + + Gets the component parameters that the view has passed + to the component + + The component parameters. + + + + Gets or sets the view to render. + + The view to render. + + + + Gets the view engine instance. + + The view engine. + + + + Gets or sets the section render dictionary. + + The section render. + + + + Represents a mock implementation of for unit test purposes. + + + + + Services the specified provider. + + The provider. + + + + Determines whether the specified key is on the cache. + + The key. + + true if the cache has the key; otherwise, false. + + + + + Gets the cache item by the specified key. + + The key. + + + + + Stores the cache item by the specified key. + + The key. + The data. + + + + Deletes the cache item by the specified key. + + The key. + + + + Mocks the calling + to register + the calls made to these methods + + + + + Initializes a new instance of the class. + + The context. + + + + Creates an instance of + using the specified template for the body + + Name of the template to load. + Will look in Views/mail for that template file. + Dictionary with parameters + that you can use on the email template + If true, it will skip the layout + An instance of + + + + Renders the mail message. + + Name of the template. + The engine context. + The controller. + if set to true [do not apply layout]. + + + + + Represents a mock implementation of for unit test purposes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The request. + The response. + The trace. + The URL info. + + + + Transfer the execution to another resource. + + + + + + + Sets the container. + + The service provider. + + + + Registers the services. + + + + + Gets the request type (GET, POST, etc) + + + + + + Gets the request URL. + + + + + + Gets the referring URL. + + + + + + Gets the underlying context of the API being used. + + + + + + Access the params (Query, Post, headers and Cookies) + + + + + + Access the session objects. + + + + + + Gets the request object. + + + + + + Gets the response object. + + + + + + Gets the trace object. + + + + + + Access the Cache associated with this + web execution context. + + + + + + Access a dictionary of volative items. + + + + + + Gets or sets the current user. + + + + + + Gets the last exception raised during + the execution of an action. + + + + + + Returns the application path. + + + + + + Returns the physical application path. + + + + + + Returns the of the the current request. + + + + + + Returns an . + + + + + + Returns the Items collection from the current HttpContext. + + + + + + Gets or sets the current controller. + + The current controller. + + + + If a container is available for the app, this + property exposes its instance. + + + + + + Gets the rendered email templates. + + The rendered email templates. + + + + Gets the messages sent. + + The messages sent. + + + + Represents an email template for unit test purposes + + + + + Initializes a new instance of the class. + + The name. + The parameters. + + + + Gets the name. + + The name. + + + + Gets the parameters. + + The parameters. + + + + Represents a mock implementation of for unit test purposes. + + + + + Initializes a new instance of the class. + + The cookies. + + + + Reads the request data as a byte array. + + How many bytes. + + + + + Reads the cookie. + + The cookie name. + + + + + Validates the input. + + + + + Gets the Http headers. + + The Http headers. + + + + Gets the per key. + + + + + + Gets the params which accumulates headers, post, querystring and cookies. + + The params. + + + + Gets a value indicating whether this requeest is from a local address. + + true if this instance is local; otherwise, false. + + + + Gets the raw URL. + + The raw URL. + + + + Gets the URI. + + The URI. + + + + Gets the HTTP method. + + The HTTP method. + + + + Gets the file path. + + The file path. + + + + Gets the param with the specified key. + + + + + + Gets the query string. + + The query string. + + + + Gets the form. + + The form. + + + + Gets the user languages. + + The user languages. + + + + Gets the IP host address of the remote client. + + The IP address of the remote client. + + + + Represents a mock implementation of for unit test purposes. + + + + + Initializes a new instance of the class. + + The cookies. + + + + Appends the header. + + The name. + The value. + + + + Writes the buffer to the browser + + The buffer. + + + + Writes the stream to the browser + + The stream. + + + + Clears the response (only works if buffered) + + + + + Clears the response content (only works if buffered). + + + + + Writes the specified string. + + The string. + + + + Writes the specified obj. + + The obj. + + + + Writes the specified char. + + The char. + + + + Writes the specified buffer. + + The buffer. + The index. + The count. + + + + Writes the file. + + Name of the file. + + + + Redirects the specified controller. + + The controller. + The action. + + + + Redirects the specified area. + + The area. + The controller. + The action. + + + + Redirects the specified URL. + + The URL. + + + + Redirects the specified URL. + + The URL. + if set to true [end process]. + + + + Creates a cookie. + + The name. + The value. + + + + Creates a cookie. + + The name. + The value. + The expiration. + + + + Creates a cookie. + + The cookie. + + + + Removes a cookie. + + The name. + + + + Gets the urls the request was redirected to. + + The redirected to. + + + + Gets the http headers. + + The headers. + + + + Gets or sets the status code. + + The status code. + + + + Gets or sets the type of the content. + + The type of the content. + + + + Gets the caching policy (expiration time, privacy, + vary clauses) of a Web page. + + + + + + Sets the Cache-Control HTTP header to Public or Private. + + + + + + Gets or sets the HTTP character set of the output stream. + + + + + + Gets the output. + + The output. + + + + Gets the output stream. + + The output stream. + + + + Gets a value indicating whether the response sent a redirect. + + true if was redirected; otherwise, false. + + + + Gets a value indicating whether this instance is client connected. + + + true if this instance is client connected; otherwise, false. + + + + + Represents a mock implementation of for unit test purposes. + + + + + Abstracts the implementation of scaffolding support for MonoRail. + + Implementors should use information from the controller instance + and add dynamic actions to it exposing operations to manipulate an entity. + + + + + + Implementors should use this method to read information + from the controller instance and add dynamic actions to the controller. + + + + + + Implementors should use this method to read information + from the controller instance and add dynamic actions to the controller. + + + + + + Represents a mock implementation of for unit test purposes. + + + + + Returns the physical path for the + specified virtual path. + + The virtual path. + The mapped path + + + + HTML encodes a string and returns the encoded string. + + The text string to HTML encode. + The HTML encoded text. + + + + URL encodes a string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + URL decodes a string and returns the decoded string. + + The text to URL decode. + The URL decoded text. + + + + URL encodes the path portion of a URL string and returns the encoded string. + + The text to URL encode. + The URL encoded text. + + + + Escapes JavaScript with Url encoding and returns the encoded string. + + The text to URL encode and escape JavaScript within. + + The URL encoded and JavaScript escaped text. + + + Converts quotes, single quotes and CR/LFs to their representation as an escape character. + + + + + Represents a mock implementation of for unit test purposes. + + + + + Initializes a new instance of the class. + + The context. + + + + Sends a message. + + From field + To field + e-mail's subject + message's body + + + + Sends a message. + + Message instance + + + + Sends multiple messages. + + Array of messages + + + + Represents a mock implementation of for unit test purposes. + + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Logs the specified message on the ASP.Net trace + + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + + + + Logs the specified message on the ASP.Net trace + + The category. + The message. + The error info. + + + + Used to hook a viewcomponent call to render a nested section + + The content available to the section + The writer + + + + Used to hook a viewcomponent call to render a view template + + view name + The content available to the view + The writer + + + + Represents a mock implementation of for unit test purposes. + + + + + Event that is raised when a section is rendered by the viewcomponent. + + + + + Event that is raised when a view is rendered by the viewcomponent. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the component. + The writer. + The view engine. + + + + Determines whether the current component declaration on the view + has the specified section. + + Name of the section. + + true if the specified section exists; otherwise, false. + + + + + Renders the view specified to the writer. + + The view template name + A writer to output + + + + Renders the component body. + + + + + Renders the body into the specified + + The writer. + + + + Renders the the specified section. + No exception will the throw if the section cannot be found. + + Name of the section. + + + + Renders the the specified section. + No exception will the throw if the section cannot be found. + + Name of the section. + The writer to output the section content. + + + + Gets or sets the section render dictionary. + + The section render. + + + + Gets the name of the component. + + The name of the component. + + + + Gets the writer used to render the view component + + The writer. + + + + Gets the dictionary that holds variables for the + view and for the view component + + The context vars. + + + + Gets the component parameters that the view has passed + to the component + + The component parameters. + + + + Gets or sets the view to render. + + The view to render. + + + + Gets the view engine instance. + + The view engine. + + + + Represents a mock implementation of for unit test purposes. + + + + + Depicts the contract used by the engine + to process views, in an independent manner. + + + + + Evaluates whether the specified template exists. + + true if it exists + + + + Processes the view - using the templateName + to obtain the correct template, + and using the context to output the result. + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the . + No layout is applied! + + + + + Implementors should return a generator instance if + the view engine supports JS generation. + + The request context. + A JS generator instance + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the context to output the result. + + The request context. + The controller. + Name of the template. + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the specified + to output the result. + + The output. + The request context. + The controller. + Name of the template. + + + + Should process the specified partial. The partial name must contains + the path relative to the views folder. + + The output. + The request context. + The controller. + The partial name. + + + + Wraps the specified content in the layout using + the context to output the result. + + The request context. + The controller. + Content to output + + + + Gets a value indicating whether the view engine + support the generation of JS. + + + true if JS generation is supported; otherwise, false. + + + + + Gets or sets a value indicating whether the view engine should set the + content type to xhtml. + + true if the content type should be set to xhtml; otherwise, false. + + + + Gets the view template file extension. + + The view file extension. + + + + Gets the JS generator view template file extension. + + The JS generator file extension. + + + + Initializes a new instance of the class. + + The view file extension. + The js generator file extension. + if set to true [supports JS generation]. + if set to true [x HTML rendering]. + + + + Evaluates whether the specified template exists. + + + true if it exists + + + + Processes the view - using the templateName + to obtain the correct template, + and using the context to output the result. + + + + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the . + No layout is applied! + + + + + + + + + Implementors should return a generator instance if + the view engine supports JS generation. + + The request context. + A JS generator instance + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the context to output the result. + + The request context. + The controller. + Name of the template. + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the specified + to output the result. + + The output. + The request context. + The controller. + Name of the template. + + + + Should process the specified partial. The partial name must contains + the path relative to the views folder. + + The output. + The request context. + The controller. + The partial name. + + + + Wraps the specified content in the layout using + the context to output the result. + + The request context. + The controller. + Content to output + + + + Gets a value indicating whether the view engine + support the generation of JS. + + + true if JS generation is supported; otherwise, false. + + + + + Gets or sets a value indicating whether the view engine should set the + content type to xhtml. + + + true if the content type should be set to xhtml; otherwise, false. + + + + + Gets the view template file extension. + + The view file extension. + + + + Gets the JS generator view template file extension. + + The JS generator file extension. + + + + Converts wiki formatted text to html formatted text. + + + The following tags are parsed: + + italic + bold + bold italic + underlined + striked + code + pre + box + pipe tables + + More about style formats + More about tables + + + + + Converts a string with wiki formatting to html formatting. + + the wiki formatted code + the html formatted code + + + + Converts a wiki pipe formatting to an HTML table + + the pipe markup + the html table + + + + Simple proof of concept filter that converts the stream data to lowercase. + + + + + Abstract base class for HttpFilters. + + + + + Dictates the contract for transform filters. + + + + + Writes the specified buffer to the output + + The buffer. + The offset. + The count. + + + + Base class holds the underlying stream. + + The stream to write to after filtering. + + + + This method is not supported for an HttpFilter + + Always thrown + + + + Close implementation. + + + Don't forget to call base.Close is you override this function. + + + + + Flushes the base stream + + + + + This method is not supported for an HttpFilter + + Always thrown + + + + This method is not supported for an HttpFilter + + Always thrown + + + + The stream to the filter can use to write write to + + + + + This method is not supported for an HttpFilter + + + + + This method is not supported for an HttpFilter + + + + + Indicates if the Stream is closed or open + + + + + Indicates if the Stream is closed or open + + + Implementors should always check Closed before writing anything to the BaseStream. + + + + + This method is not supported for an HttpFilter + + Always thrown + + + + This method is not supported for an HttpFilter + + Always thrown + + + + Initializes a new instance of the class. + + The stream to write to after filtering. + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + Simple proof of concept filter that converts the stream data to uppercase. + + + + + Initializes a new instance of the class. + + The stream to write to after filtering. + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + Post process the request via Castle.WikiFormatter + + + + + Constructor of the WikiTransformfilter + + output stream + + + + Pulls the http stream through the WikiFormatter filter. + + The content stream + Start of the stream + Lenght of the stream + + + + This component renders different inner + sections based on the current principal state (authenticated or not) + + #blockcomponent(AuthenticatedContent) + #logged + Welcome back $context.CurrentUser.Identity.Name + #end + #notlogged + Create your account by clicking here. + #end + #end + + + + + + Base class for reusable UI Components. + + + Implementors should override + for implement proper initialization (if necessary). + Also implement as by default it + will render a default view on [ViewFolderRoot]/components/[componentname]. + + You can also override if your component supports + neste sections (ie templates provided on the view that uses the view component. + + + Another way is to use the to specify a custom name + and the sections supported. + + + Notice that view components can render strings or views on their folder. You can + create sophisticate components with that mixture. Sections allow the users of your component + to give it a block of content, usually customizing or definiting the content to be especially + rendered by your component. + + + + A very simplist view component that renders the time. + + public class ShowTime : ViewComponent + { + public override void Initialize() + { + } + + public override void Render() + { + RenderText("Time: " + DateTime.Now.ToString()); + } + } + + + This can be used from the view using the following syntax (NVelocity view engine) + + + #component(ShowTime) + + + + + + + Holds the component context + + + + + Holds the associated + to the request lifetime. + + + + + Invoked by the framework. + + Request context + ViewComponent context + + + + Binds the component parameters. + + + + + Called by the framework once the component instance + is initialized + + + + + Called by the framework so the component can + render its content + + + + + Implementor should return true only if the + name is a known section the view component + supports. + + section being added + if section is supported + + + + Specifies the view to be processed after the component has finished its processing. + + + + + Specifies the view to be processed after the component has finished its processing. + + + + + Specifies the shared view to be processed after the component has finished its + processing. (A partial view shared + by others views and usually in the root folder + of the view directory). + + + + + Cancels the view processing. + + + + + Renders the specified content back to the browser + + The content to render. + + + + Determines whether the current component declaration on the view + has the specified section. + + Name of the section. + + true if the specified section exists; otherwise, false. + + + + + Renders the component body. + + + + + Renders the body into the specified + + The writer. + + + + Renders the the specified section + + Name of the section. + + + + Renders the the specified section + + Name of the section. + The writer. + + + + Gets the Component Context + + + + + Gets the + associated with the current request + + + + + Gets the component parameters + + + + + Gets the Session dictionary. + + + + + Gets a dictionary of volative items. + Ideal for showing success and failures messages. + + + + + Gets the web context of ASP.NET API. + + + + + Gets the request object. + + + + + Gets the response object. + + + + + Provides a way to make data available + to the view that the component uses + + + + + Shortcut to Request.Params + + + + + Called by the framework so the component can + render its content + + + + + Implementor should return true only if the + name is a known section the view component + supports. + + section being added + + if section is supported + + + + + Renders the inner content and stores it in the IViewEngineContext + + #blockcomponent(CaptureFor with "id=someId" ["append=before"]) + content to be captured + #end + + ${someId} + + id - the key to be used to retrieve the captured contents + append - when present will append component content into the current + content, if append = "before" will append before the current content + + + + + Render component's content and stores it in the view engine ContextVars + so it can be reference and included in other places + + + + + Renders the contents of the block component into the $childContent context + variable, and then renders the components view file. + + + Controller view: + + #blockcomponent(ChildContentComponent) + This will be rendered inside a div tag. + #end + + + ViewComponent view: + + <div>$componentChildContent</> + + + + + + Obtains the content of the child. + + + + + Populates the context. + + + + + Called by the framework so the component can + render its content + + + + + Specifies the view to be processed after the component has finished its processing. + + + + + + Specifies the view to be processed after the component has finished its processing. + + + + + + + Renders a table where each nested content is rendered on a cell. + + For example, suppose you have a dynamic list of items and what to display + them side by side, in four columns. As the number of elements in unknown + in development time, you can use the ColumnRenderer to + create the table and cells. + + + + + The following example uses nvelocity view engine syntax. + + + + + Which should render something like: + + + + + + Custom first element + + + Content is Tennis + + + Content is Soccer + + + + + Content is Voleyball + + + + ]]> + + + + + The following sections are supported. Only the item section must be always provided.
+ + + start: override it in order to create the table yourself
+ endblock: override it in order to end the table
+ + startrow: override it in order to start the column
+ endrow: override it in order to end the column
+ + startcolumn: override it in order to start the cell
+ endcolumn: override it in order to end the cell
+ + item: must be overriden in order to display the item content (unless it's something trivial like a primitive)
+ empty: section used when the is empty
+ firstelement: if provided, will be rendered before any cells
+
+ + + The number of columns defaults to three. + +
+
+ + + Called by the framework once the component instance + is initialized + + + + + Called by the framework so the component can + render its content + + + + + Implementor should return true only if the + name is a known section the view component + supports. + + section being added + if section is supported + + + + Gets or sets the number of columns to display. + + The cols. + + + + Gets or sets the items to show. + + The items. + + + + Gets or sets a value indicating whether the component should render a table + even if there are no elements on the . + + + true if it should not render; otherwise, false. + + + + + Creates a digg style pagination. + + Based on Alex Henderson work. See + (Monorail Pagination with Base4.Net) + http://blog.bittercoder.com/PermaLink,guid,579711a8-0b16-481b-b52b-ebdfa1a7e225.aspx + + + + + + Parameters:
+ adjacents: number of links to show around the current page
+ page (required): instance ()
+ url: url to link to
+ useInlineStyle: defines if the outputted content will use inline style or css classnames (defaults to true)
+ renderIfOnlyOnePage: should the pagination render if there's only one page (defaults to true)
+ paginatefunction: a javascript function name to invoke on the page links (instead of a URL)
+
+ + + Supported sections:
+ startblock: invoked with page
+ endblock: invoked with page
+ link: invoked with pageIndex, url and text + so you can build a custom link
+ prev: text displayed instead of "<%lt;prev"
+ next: text displayed instead of "next>%gt;"
+
+ +
+
+ + + Called by the framework once the component instance + is initialized + + + + + Implementor should return true only if the + name is a known section the view component + supports. + + section being added + + if section is supported + + + + + Called by the framework so the component can + render its content + + + + + Writes the page link. + + The writer. + Index of the page. + The text. + The HTML attributes. + + + + Gets or sets the paginated page instance. + + The page. + + + + Gets or sets the paginate function name. + + A paginate function is a javascript fuction + that receives the page index as the only argument. + + + The paginate function. + + + + Gets or sets the adjacents (number of links to show). + + The adjacents. + + + + Gets or sets a value indicating whether the component should output inline styles. + + true if it should use inline styles; otherwise, false. + + + + Gets or sets a value indicating whether the component should render links even if there is only one page. + + + true if it should render; otherwise, false. + + + + + Gets or sets the URL to be used when generating links + + The URL. + + + + Only renders the body if the current user has the specified role + + + #blockcomponent(SecurityComponent with "role=IsAdmin") + Content only available to admin + #end + + + or for multiple roles (using "or") + + + #blockcomponent(SecurityComponent with "roles=Manager,Admin") + Content only available to admin or managers + #end + + + + + + + Called by the framework once the component instance + is initialized + + + + + Called by the framework so the component can + render its content + + + + + Renders a javascript content that changes the page + elements using a special dsl-like language. + + + + + + The following illustrates its use. + + #blockcomponent(UpdatePage) + $page.ReplaceHtml('myotherdiv', 'new content') + $page.Highlight('mydivid') + #end + + + + The current implementation is dependent on + prototype.js and scriptaculous.js + + + + + Called by the framework so the component can + render its content + + + + + Evaluates the component's body providing a page + instance which is a + + + + + + Renders a javascript tag block with an inline javascript + that changes the page + elements using a special dsl-like language. + + + + + + The following illustrates its use. + + #blockcomponent(UpdatePageTag) + $page.ReplaceHtml('myotherdiv', 'new content') + $page.Highlight('mydivid') + #end + + + + The current implementation is dependent on + prototype.js and scriptaculous.js + + + + + Called by the framework so the component can + render its content + + + + + Pendent + + + + + Gets the editor style used by the method. + + An that can be used to gain additional context information. + + A value that indicates the style of editor used by the method. If the does not support this method, then will return . + + + + + Edits the specified object's value using the editor style indicated by the method. + + An that can be used to gain additional context information. + An that this editor can use to obtain services. + The object to edit. + + The new value of the object. If the value of the object has not changed, this should return the same object it was passed. + + + + + Pendent + + + + + Initializes a new instance of the class. + + The action args. + The context. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Pendent + + + + + Gets a value indicating whether this instance is in design mode. + + + true if this instance is in design mode; otherwise, false. + + + + + Pendent + + + + + Gets the property names. + + The property names. + + + + Pendent + + + + + Initializes a new instance of the class. + + The name. + + + + Initializes a new instance of the class. + + The type. + The name. + + + + Initializes a new instance of the class. + + The instance. + The name. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Collects the property names. + + The type. + + + + + Gets the property names. + + The property names. + + + + Pendent + + + + + Determines whether this instance is valid. + + + true if this instance is valid; otherwise, false. + + + + + Validates this instance. + + + + + Trims the specified value. + + The value. + + + + + Gets an error message indicating what is wrong with this object. + + + An error message indicating what is wrong with this object. The default is an empty string (""). + + + + Gets or sets the with the specified property name. + + + + + + Pendent + + + + + Pendent + + + + + Resolves the symbol. + + The symbol. + + + + + Adds the action arguments. + + The context. + The action args. + + + + Resolves the symbol. + + The symbol. + + + + + Adds the action arguments. + + The context. + The resolved action args. + + + + Resolves the symbol. + + The symbol. + + + + + Adds the action arguments. + + The context. + The resolved action args. + + + + Pendent + + + + + Initializes a new instance of the class. + + The context. + + + + Dispatches the action. + + The source. + The instance containing the event data. + + + + Dispatches the action. + + The source. + The instance containing the event data. + The action. + + + + Resolves the symbol. + + The symbol. + + + + + Pushes the event scope. + + The source. + The instance containing the event data. + + + + Gets the context. + + The context. + + + + Pendent + + + + + Validates this instance. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the name. + + The name. + + + + Gets or sets the expression. + + The expression. + + + + Gets or sets the value. + + The value. + + + + Pendent + + + + + Pendent + + + + + + Adds the specified member. + + The member. + + + + Adds at. + + The index. + The member. + + + + Removes the specified member. + + The member. + + + + Determines whether [contains] [the specified member]. + + The member. + + true if [contains] [the specified member]; otherwise, false. + + + + + Performs additional custom processes when validating a value. + + The object to validate. + + + + Gets or sets the at the specified index. + + + + + + Gets or sets the number of elements that the can contain. + + + The number of elements that the can contain. + is set to a value that is less than . + + + + Adds the specified name. + + The name. + The value. + + + + + Removes the specified name. + + The name. + + + + + Performs additional custom processes before inserting a new element into the instance. + + The zero-based index at which to insert value. + The new value of the element at index. + + + + Pendent + + + + + Initializes a new instance of the class. + + + + + Validates this instance. + + + + + Reset the command defaults so they don't get serialized in the html markup. + + if set to true [is command event]. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the name of the action. + + The name of the action. + + + + Gets or sets the name of the event. + + The name of the event. + + + + Gets the command bindings. + + The command bindings. + + + + Gets the action arguments. + + The action arguments. + + + + Gets or sets the parent. + + The parent. + + + + Gets the control instance. + + The control instance. + + + + Pendent + + + + + Initializes a new instance of the class. + + The parent. + + + + Performs additional custom processes after setting a value in the instance. + + The zero-based index at which oldValue can be found. + The value to replace with newValue. + The new value of the element at index. + + + + Performs additional custom processes after inserting a new element into the instance. + + The zero-based index at which to insert value. + The new value of the element at index. + + + + Gets the with the specified event name. + + + + + + Pendent + + + + + Initializes a new instance of the class. + + The binder. + The action. + + + + Pushes the scope. + + The scope. + + + + Dispatches the action. + + + + + Dispatches the action. + + Name of the action. + + + + Resolves the action arguments. + + + + + + Resolves the action arguments. + + The action args. + The resolved action args. + + + + Resolves the symbol. + + Name of the symbol. + if set to true [throw if not found]. + + + + + Adds the action arguments. + + The context. + The resolved action args. + + + + Resolves the action argument. + + The action arg. + + + + + Registers the default scopes. + + + + + Gets the action. + + The action. + + + + Pendent + + + + + Validates this instance. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the name of the action. + + The name of the action. + + + + Gets or sets the name of the command. + + The name of the command. + + + + Gets the action arguments. + + The action arguments. + + + + Pendent + + + + + Initializes a new instance of the class. + + The context. + + + + Handles the event. + + The sender. + The e. + + + + Adds the action arguments. + + The context. + The resolved action args. + + + + Obtains the name of the command action. + + The instance containing the event data. + + + + + Pendent + + + + + Pendent + + + + + Determines whether [is bindable control] [the specified control]. + + The control. + + true if [is bindable control] [the specified control]; otherwise, false. + + + + + Adds the binding. + + The control. + + + + + Finds the control with ID. + + The control ID. + + + + + Gets the controller actions. + + + + + + Gets a value indicating whether [design mode]. + + true if [design mode]; otherwise, false. + + + + Gets the controller bindings. + + The controller bindings. + + + + Gets the action arguments. + + The action arguments. + + + + Initializes a new instance of the class. + + + + + Called when [before action]. + + The action. + The action args. + + + + + Called when [after action]. + + The action. + The action args. + + + + Called when [action error]. + + The action. + The ex. + + + + + Specifies whether this object can provide its extender properties to the specified object. + + The to receive the extender properties. + + true if this object can provide extender properties to the specified object; otherwise, false. + + + + + Gets the controller binding. + + The control. + + + + + This is never fired in ASP.NET runtime code + + + + + + + Determines whether [is bindable control] [the specified control]. + + The control. + + true if [is bindable control] [the specified control]; otherwise, false. + + + + + Adds the binding. + + The control. + + + + + Finds the control with ID. + + The control ID. + + + + + Gets the controller actions. + + + + + + Determines whether [is visual control] [the specified control]. + + The control. + + true if [is visual control] [the specified control]; otherwise, false. + + + + + Finds the control at design time. + + The control ID. + + + + + Finds the control at run time. + + The control ID. + + + + + Notifies the designer every time there is a change to + the child properties. This is a workaround for the Web + Designer not issuing SetControllerBinding invocations. + + + + + Raises the event. + + The object that contains the event data. + + + + Continues the action. + + Name of the action. + The action args. + + + + Gets a value indicating whether a control is being used on a design surface. + + + true if the control is being used in a designer; otherwise, false. + + + + Gets the controller bindings. + + The controller bindings. + + + + Gets the action arguments. + + The action arguments. + + + + Occurs when [before action]. + + + + + Occurs when [after action]. + + + + + Occurs when [action error]. + + + + + Pendent + + + + + Initializes a new instance of the class. + + The binding. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets the action bindings. + + The action bindings. + + + + Pendent + + + + + Pendent + + + + + Pendent + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The binder. + + + + Validates this instance. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the binder. + + The binder. + + + + Gets or sets the control ID. + + The control ID. + + + + Gets or sets the control instance. + + The control instance. + + + + Gets the action bindings. + + The action bindings. + + + + Pendent + + + + + Initializes a new instance of the class. + + The binder. + + + + Removes the specified control. + + The control. + + + + + Removes the specified control id. + + The control id. + + + + + Performs additional custom processes after setting a value in the instance. + + The zero-based index at which oldValue can be found. + The value to replace with newValue. + The new value of the element at index. + + + + The VS Designer adds new items as soon as their accessed, + but items may not be valid so we have to clean up. + + + + + + + Performs additional custom processes after removing an element from the instance. + + The zero-based index at which value can be found. + The value of the element to remove from index. + + + + Gets the with the specified control. + + + + + + Gets the with the specified control id. + + + + + + Pendent + + + + + Pendent + + + + + Evaluates the specified expression. + + The expression. + The context. + + + + + Evaluates the specified expression. + + The expression. + The context. + + + + + Initializes a new instance of the class. + + The context. + + + + Handles the event. + + The sender. + The e. + + + + Pendent + + + + + Returns a collection of standard values for the data type this type converter is designed for when provided with a format context. + + An that provides a format context that can be used to extract additional information about the environment from which this converter is invoked. This parameter or properties of this parameter can be null. + + A that holds a standard set of valid values, or null if the data type does not support a standard set of values. + + + + + Returns whether this object supports a standard set of values that can be picked from a list, using the specified context. + + An that provides a format context. + + true if should be called to find a common set of values the object supports; otherwise, false. + + + + + Returns whether the collection of standard values returned from is an exclusive list of possible values, using the specified context. + + An that provides a format context. + + true if the returned from is an exhaustive list of possible values; false if other values are possible. + + + + + Control used on master pages to represent + the position where the child page contents + should be written. + + + + + Sends server control content to a provided object, which writes the content to be rendered on the client. + + The object that receives the server control content. + + + + Control used to invoke method os a specified Helper. + + + + + Initializes a new instance of the class. + + + + + Binds a data source to the invoked server control and all its child controls. + + + + + Sends server control content to a provided object, which writes the content to be rendered on the client. + + The object that receives the server control content. + + + + The Helper's Name. + + A representing the Helper's Name. + + + + The name of the method which will be invoked. + + A rerprsenting the method's name + + + + An of objects which are the method arguments. + + An object[] representing the arguments. + + + + An which is the method argument. + + An representing the argument. + + + + Gets the controller. + + The controller. + + + + Pendent + + + + + Loads any saved view-state information to the object. + + The saved view state. + + + + Saves the page state to persistence medium. + + State of the view. + + + + Default implementation of a . + Uses ASP.Net WebForms as views. + + + + + Abstract base class for View Engines. + + + + + The service provider instance + + + + + Services the specified provider. + + The provider. + + + + Evaluates whether the specified template exists. + + true if it exists + + + + Processes the view - using the templateName + to obtain the correct template, + and using the context to output the result. + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the System.IO.TextWriter. + + + + + Should process the specified partial. The partial name must contains + the path relative to the views folder. + + The output. + The request context. + The controller. + The partial name. + + + + Implementors should return a generator instance if + the view engine supports JS generation. + + The request context. + A JS generator instance + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the context to output the result. + + The request context. + The controller. + Name of the template. + + + + Processes the js generation view template - using the templateName + to obtain the correct template, and using the specified + to output the result. + + The output. + The request context. + The controller. + Name of the template. + + + + Wraps the specified content in the layout using the + context to output the result. + + + + + Invokes the + + The controller. + The view argument. + + + + Invokes the + + The controller. + The view argument. + + + + Sets the HTTP Content-Type header appropriately. + + + + + Sets the HTTP Content-Type header to text/javascript + + + + + Gets a value indicating whether the view engine + support the generation of JS. + + + true if JS generation is supported; otherwise, false. + + + + + Gets the view file extension. + + The view file extension. + + + + Gets the JS generator file extension. + + The JS generator file extension. + + + + Gets/sets whether rendering should aim + to be XHTML compliant, obtained from the configuration. + + + + + Gets or sets the view source loader. + + The view source loader. + + + + Gets the logger. + + The logger. + + + + Initializes a new instance of the class. + + + + + Evaluates whether the specified template exists. + + + true if it exists + + + + Obtains the aspx Page from the view name dispatch + its execution using the standard ASP.Net API. + + + + + Processes the view - using the templateName + to obtain the correct template + and writes the results to the System.IO.TextWriter. + + + + + + + + + Processes the partial. + + The output. + The context. + The controller. + The partial name. + + + + Creates the JS generator. + + The context. + + + + + Generates the JS. + + The output. + The context. + The controller. + Name of the template. + + + + Wraps the specified content in the layout using the + context to output the result. + + + + + + + + Gets a value indicating whether the view engine + support the generation of JS. + + + true if JS generation is supported; otherwise, false. + + + + + Gets the view file extension. + + The view file extension. + + + + Gets the JS generator file extension. + + The JS generator file extension. + + + + Depicts the contract the engine has + to perform the creation and disposal of + instances. + + + + + Implementors should perform their logic to + return a instance of . + If the can not be created, + it should return null. + + + + + + + Implementors should perform their logic + to release the instance + and its resources. + + + + + + Initializes a new instance of the class. + + The engine. + Name of the view. + + + + Executes the page. + + The context. + + + + + Implementors should perform their logic to + return a instance of . + If the can not be created, + it should return null. + + + + + + + Implementors should perform their logic + to release the instance + and its resources. + + + + + + Initializes a new instance of the class. + + The original. + + + + Gets the original stream. + + The original stream. + + + + Pendent + + + + + Finds the first control that matches the id, rescursively. + + The root control. + The id of the control to search. + The matching control, or null if not found. + + + + Gets the field or property of the specified target. + + The target to act on. + The name of the field or property. + The retrieved field or property. + + + + Sets the field or property of the specified target. + + The target to act on. + The name of the field or property. + The value to set. + + + + Represents a view source embedded as an assembly resource. + + + + + Represents a view template source + + + + + Opens the view stream. + + + + + + Gets or sets the last updated. + + The last updated. + + + + Gets the last modified. + + The last modified. + + + + Gets a value indicating whether cache is enabled for it. + + true if cache is enabled for it; otherwise, false. + + + + Initializes a new instance of the class. + + Name of the template. + The source info. + + + + Opens the view stream. + + + + + + Gets the last modified. + + The last modified. + + + + Gets or sets the last updated. + + The last updated. + + + + Gets a value indicating whether cache is enabled for it. + + true if cache is enabled for it; otherwise, false. + + + + Default implementation + that uses the file system and assembly source as source of view templates + + + + + Defines a contract that abstracts view template locations. + + + + + Evaluates whether the specified template exists. + + The template name + true if it exists + + + + Builds and returns a representation of a view template + + The template name + + + + + Gets a list of views on the specified directory + + Directory name + + + + + Adds the assembly source. + + The assembly source info. + + + + Gets/sets the root directory of views, obtained from the configuration. + + + + + Gets or sets whether the instance should use cache + + + + + Gets a list of assembly sources + + + + + Raised when the view is changed. + + + + + Services the specified provider. + + The provider. + + + + Evaluates whether the specified template exists. + + The template name + true if it exists + + + + Builds and returns a representation of a view template + + The template name + + + + + Gets a list of views on the specified directory + + Directory name + + + + + Adds the assembly source. + + The assembly source info. + + + + Gets/sets the root directory of views, + obtained from the configuration. + + + + + Gets or sets whether the instance should use cache + + + + + + Gets a list of assembly sources + + + + + + Raised when the view is changed. + + + + + Represents a view template source on the file system. + + + + + Initializes a new instance of the class. + + The file info. + if set to true [enable cache]. + + + + Opens the view stream. + + + + + + Gets a value indicating whether cache is enabled for it. + + true if cache is enabled for it; otherwise, false. + + + + Gets or sets the last updated. + + The last updated. + + + + Gets the last modified. + + The last modified. + + + + MonoRail constants + + + + + TODO: Document why this is necessary + + + + + TODO: Document why this is necessary + + + + + Represents and Exception during the controller processing. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Default implementation of + + Handles the whole controller lifecycle in a request. + + + + + + Manages the execution of a controller action. + + The order of methods invocation is the following: + + + 1. InitializeController + + + 2. SelectAction + + + 3. RunStartRequestFilters (if false is returned - or an exception - + you might want to invoke PerformErrorHandling) + + + 4. ProcessSelectedAction + + + 5. Dispose + + + + + + Should bring the controller to an usable + state by populating its fields with values that + represent the current request + + The action name + The area name + The controller name + + + + Should resolve the action to be executed (method or dynamic + action) based on the parameters + + The action name + The controller name + true if it was able to resolve it + + + + Should resolve the action to be executed (method or dynamic + action) based on the parameters and custom arguments + + The action name + The controller name + Custom arguments + true if it was able to resolve it + + + + Runs the action (or the dynamic action), + process the rescue or the view accordingly + to the process result. + + + + + Runs the action (or the dynamic action), + process the rescue or the view accordingly + to the process result. + + Custom arguments + + + + Should performs the rescue (if available), raise + the global error event and throw the exception + if the rescue was not found + + + + + Runs the start request filters. + + false if the process should be stopped + + + + Gets the controller instance. + + The controller. + + + + Gets a value indicating whether an error has happened during controller processing + + + if has error; otherwise, . + + + + + Key for the executor instance on Context.Items + + + + + The reference to the instance + + + + + Reference to the instance + + + + + Reference to the instance + + + + + Holds the filters associated with the action + + + + + Initializes a new instance of + the class. + + The controller. + The context. + + + + Invoked by the framework in order to give a chance to + obtain other services + + The service proviver + + + + Disposes the filters and resources associated with a controller. + + + + + Should bring the controller to an usable + state by populating its fields with values that + represent the current request + + The area name + The controller name + The action name + + + + Selects the action to execute based on the url information + + The controller name + The action name + + + + + Selects the action to execute based on the url information + + The controller name + The action name + The action arguments. + + + + + Executes the method or the dynamic action + + + + + Executes the method or the dynamic action with custom arguments + + The action args. + + + + Prepares the transform filter. + + The method. + + + + Performs the error handling: + + - Tries to run the rescue page
+ - Throws the exception
+
+
+
+ + + Runs the start request filters. + + false if the process should be stopped + + + + Creates the and initialize helpers associated with a controller. + + + + + Runs the after view rendering filters. + + false if the process should be stopped + + + + Runs the after action filters. + + + + + Runs the after view rendering filters. + + + + + Performs the additional helper initialization + checking if the helper instance implements . + + The helper instance. + + + + Invokes the scaffold support if the controller + is associated with a scaffold + + + + + Creates the resources associated with a controller + + The method. + + + + Releases the resources. + + + + + Identifies if no filter should run for the given action. + + The method. + + + + + Clones all Filter descriptors, in order to get a writable copy. + + + + + Obtains the name of the default layout. + + + + + + Performs the rescue. + + The action (can be null in the case of dynamic actions). + The exception. + + + + + Gets the rescue for the specified exception type. + + The rescues. + Type of the exception. + + + + + Raises the on action exception on extension. + + + + + The following lines were added to handle _default processing + if present look for and load _default action method + + Method arguments + + + + + Gets a value indicating whether an error has happened during controller processing + + + if has error; otherwise, . + + + + + Gets the controller. + + The controller. + + + + Thrown when a controller is not found. + + + + + Initializes a new instance of the class. + + The area. + The controller. + + + + Initializes a new instance of the class. + + The area. + The controller. + The inner exception. + + + + Initializes a new instance of the class. + + The URL. + + + + Initializes a new instance of the class. + + The URL. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + When overridden in a derived class, sets the + with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is a null reference ( in Visual Basic). + + + + Builds the exception message. + + The area. + The controller. + + + + + Gets the area name. + + The area name. + + + + Gets the controller name. + + The controller name. + + + + Delegate to create dynamic actions without the need for a separated class. + + Controller instance + + + + Represents a dynamic action that forwards the + call to an + + + + + An action that is not a method + on the controller. + + + + + + To attach a dynamic action to a controller use + the dictionary. + + + + + Implementors should perform the action + upon this invocation + + + + + Initializes a new instance of the class. + + The action delegate. + + + + Implementors should perform the action + upon this invocation + + + + + + Provides the services used and shared by the framework. Also + is in charge of creating an implementation of + upon the start of a new request. + + + + + Configures the framework, starts the services + and application hooks. + + + + + + Disposes of the resources (other than memory) used by the + module that implements + + + + + Creates and starts MonoRail's service container. + + + + + + This method is invoked in response to BeginRequest event. + It checks if the request should be treat by MonoRail (by reading the file extension) + and if so, creates the instance. + + The HttpApplication instance + Event information + + + + Creates the controller, selects the target action + and run start request filters. + + The HttpApplication instance + Event information + + + + Uses the url information and the controller factory + to instantiate the proper controller. + + MonoRail's request context + A controller instance + + + + Creates the and initialize executor. + + The controller. + The context. + + + + + Registers to HttpApplication events + + The application instance + + + + Base class for filters which dispatches to virtual methods + based on the value. + + + + + Implementors should perform they filter logic and + return true if the action should be processed. + + When this filter is being invoked + Current context + The controller instance + true if the action + should be invoked, otherwise false + + + + Override this method if the filter was set to + handle + + The MonoRail request context + The controller instance + + + + Override this method if the filter was set to + handle + + The MonoRail request context + The controller instance + + + + Override this method if the filter was set to + handle + + The MonoRail request context + The controller instance + true if the request should proceed, otherwise false + + + + Override this method if the filter was set to + handle + + The MonoRail request context + The controller instance + true if the request should proceed, otherwise false + + + + Keeps data across a single request using the session + + + + + Flash key + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The copy. + + + + Remove any element thats not marked to be kept. + This method is automatically called by the framework after the controller is processed. + + + + + Keeps the entire flash contents available for the next action + + + + + Keeps the Flash['key'] contents available for the next action + + + + + Marks the entire flash to be discarded by the end of the current action + + + + + Marks Flash[key] to be discarded by the end of the current action + + + + + Sets a flash that will not be available to the next action, only to the current. + + Flash.Now( key, "Hello current action" ) + + + This method enables you to use the flash as a central messaging system in your app. + When you need to pass an object to the next action, you use the standard flash assign ([]=). + When you need to pass an object to the current action, you use Now, and your object will + vanish when the current action is done. + + + Entries set via Now are accessed the same way as standard entries: Flash['my-key']. + + + + + + Adds an element with the specified key and value into the . + + The key of the element to add. + The value of the element to add. The value can be null. + The is read-only.-or- The has a fixed size. + An element with the same key already exists in the . + key is null. + + + + Making sure we keep any item added + to the flash directly for at least one more action. + + + + + Gets or sets the with the specified key. + + + + + + Gets a value indicating whether this instance has items to keep. + + + true if this instance has items to keep; otherwise, false. + + + + + Defines that the implementor wants to add + dynamic actions to controllers. + + + + + + You can associate a dynamic action provider with a controller using the + + + + + + Implementors should register their dynamics + actions into the controller + + The target controller + + + + Enum (flag) to indicate when the filter should + or is invoked. + + + + + The filter is invoked before the action. + + + + + The filter is invoked after the action. + + + + + The filter is invoked before and after the action. + + + + + The filter is invoked + when the MonoRail request is started. + It is the best place to run authentication check + if you are using caching. However, the Session will + not be available. + + + + + The filter is invoked before the action. + + + + + The filter is invoked after the action. + + + + + The filter is invoked after the rendering. + + + + + The filter is invoked around all steps. + + + + + Depicts the contract for wizard controllers. + + + + + + + The following code shows how to create a simple wizard with two pages. + + [DynamicActionProvider(typeof(WizardActionProvider))] + public class MyWizardController : Controller, IWizardController + { + public void OnWizardStart() + { } + + public bool OnBeforeStep(String wizardName, String stepName, WizardStepPage step) + { + returtn true; + } + + public void OnAfterStep(String wizardName, String stepName, WizardStepPage step) + { } + + public WizardStepPage[] GetSteps(IRailsEngineContext context) + { + return new WizardStepPage[] { new MyPage1(), new MyPage2() }; + } + } + + + + + The interface members allow you to perform some logic on important + events from a wizard lifecycle. The must be used + to return the steps the wizard has. + + + + + Called when the wizard starts. + + + This is invoked only once per wizard lifecycle, but can + happen again if the data added by the infrastructure was not found on the session. + + + + + Called before processing a step. Returning false tells + the infrastructure to stop the processing the request. + + Name of the wizard. + Name of the step. + The step instance. + true if the process should proceed, otherwise, false + + + + Called after processing a step. + + Name of the wizard. + Name of the step. + The step instance. + + + + Implementors should return an array of steps that compose the wizard. + + + This should be deterministic per session -- ie. + always return the same instances for the same user session. + + The web request context. + An array of steps + + + + Implements to dispatch the web + requests. + + + + + Logger instance that won't be null, even when logging is disabled + + + + Constructs a MonoRailHttpHandler + + + + + + Pendent + + + + + + Performs the base work of MonoRail. Extracts + the information from the URL, obtain the controller + that matches this information and dispatch the execution + to it. + + + + + + Can be overriden so new semantics can be supported. + + + + + + + Pendent + + + + + Gets the current context. + + The current context. + + + + Coordinates the creation of new + and uses the configuration to obtain the correct factories + instances. + + + + + Initializes a new instance of the class. + + + + + Returns an instance of a class that implements + the interface. + + An instance of the class that provides references to intrinsic server objects (for example, Request, Response, Session, and Server) used to service HTTP requests. + The HTTP data transfer method (GET or POST) that the client uses. + The of the requested resource. + The to the requested resource. + + A new object that processes the request. + + + + + Enables a factory to reuse an existing handler instance. + + The object to reuse. + + + + This might be subject to race conditions, but + I'd rather take the risk - which in the end + means just replacing the instance - than + creating locks that will affect every single request + + Logger name + Service provider + Logger instance + + + + Parent Service container for the MonoRail framework + + + + The only one Extension Manager + + + Prevents GC from collecting the extensions + + + Keeps only one copy of the config + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Allows registration without the configuration + + + + + Initializes the container state and its services + + + + + Checks whether the specified URL is to be handled by MonoRail + + The URL. + + if it is a MonoRail request; otherwise, . + + + + + Reads the configuration and initializes + registered extensions. + + The configuration object + + + + Coordinates the instantiation, registering and initialization (lifecycle-wise) + of the services used by MonoRail. + + The configuration object + + + + Checks for services that implements + or and initialize them through the interface + + List of MonoRail's services + + + + Checks for services that implements + and invoke on them + + List of MonoRail's services + + + + Instantiates and registers the services used by MonoRail. + + The service's registry + List of service's instances + + + + Registers the default implementation of services, if + they are not registered + + + + + Checks whether non-optional services were supplied + through the configuration, and if not, register the + default implementation. + + The configuration object + + + + Core engine. Performs the base work or the + framework, processing the URL and dispatching + the execution to the controller. + + + This is were all fun begins. + + + + + Returns the MonoRail context assosciated with the current + request if one is available, otherwise null. + + + + + Provides routing basic services in response to rules defined in + . + + This class delegates the resolving of the path that will be evaluated + to derivided classes. + + + + + + Initializes a module and prepares it to handle requests. + + An that provides access to the methods, properties, and events common to all application objects within an ASP.NET application + + + + Disposes of the resources (other than memory) used by the module that implements . + + + + + Called when [begin request]. + + The sender. + The instance containing the event data. + + + + Gets the source path. + + + + + + Returns the original path + (before rewriting occured), or null + if rewriting didn't occur on this request. + + + + + Exposes a single point to expose MonoRail's Container + + + + + Gets or sets the service container. + + The service container. + + + + Uses the HttpContext and the + to access the container instance. + + + + + Initializes a new instance of the class. + + + + + Locates the service provider using the registered strategies. + + + + + + Adds a locator strategy. + + The strategy. + + + + Gets the instance. + + The instance. + + + + Abstract an approach to access a + + + + + Locates the provider. + + + + + + Default strategy to access a service provider + + + + + Locates the provider using the ApplicationInstance and casting it to + + + + + + + Specialization of that tries + to match the request params to method arguments. + + + You don't even need to always use databinding within + arguments. + and + provides the same functionality to be used in place. + + + + + Represents the errors associated with an instance bound. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The binder. + + + + Populates the validator error summary. + + The instance. + The binder used for binding. + + + + Gets the error summary associated with validation errors. + + Will only work for instances populated by the DataBinder + + + object instance + Error summary instance (can be null if the DataBinder wasn't configured to validate) + + + + Returns true if the given instance had + validation errors during binding. + + Will only work for instances populated by the DataBinder + + + object instance + true if the validation had an error + + + + Gets a list of errors that were thrown during the + object process, like conversion errors. + + The instance that was populated by a binder. + List of errors + + + + Constructs the parameters for the action and invokes it. + + The method. + The request. + The action args. + + + + Uses a simple heuristic to select the best method -- especially in the + case of method overloads. + + The action name + The avaliable actions + The request instance + The custom arguments for the action + + + + + Selects the best method given the set of entries + avaliable on and + + The candidates. + The web params. + The custom action args. + + + + + Gets the name of the request parameter. + + The param. + + + + + Uses a simplest algorithm to compute points for a method + based on parameters available, which in turn reflects + the best method is the one which the parameters will be + able to satistfy more arguments + + The method candidate + Parameter source + Extra parameters + + + + + Returns an array that hopefully fills the arguments of the selected action. + + + Each parameter is inspected and we try to obtain an implementation of + from the attributes the parameter have (if any). + If an implementation is found, it's used to fill the value for that parameter. + Otherwise we use simple conversion to obtain the value. + + Parameters to obtain the values to + The current request, which is the source to obtain the data + Extra arguments to pass to the action. + An array with the arguments values + + + + Binds the object of the specified type using the given prefix. + + Type of the target. + The prefix. + + + + + Binds the object of the specified type using the given prefix. + but only using the entries from the collection specified on the + + Restricts the data source of entries. + Type of the target. + The prefix. + + + + + Binds the object of the specified type using the given prefix. + but only using the entries from the collection specified on the + + From. + Type of the target. + The prefix. + The excluded properties, comma separated list. + The allowed properties, comma separated list. + + + + + Binds the object instance using the specified prefix. + + The instance. + The prefix. + + + + Binds the object instance using the given prefix. + but only using the entries from the collection specified on the + + The instance. + From. + The prefix. + + + + Binds the object of the specified type using the given prefix. + + Target type + The prefix. + + + + + Binds the object of the specified type using the given prefix. + but only using the entries from the collection specified on the + + Target type + From. + The prefix. + + + + + Binds the object of the specified type using the given prefix. + but only using the entries from the collection specified on the + + + From. + The prefix. + The excluded properties. + The allowed properties. + + + + + This method is for internal use only + + + + + + + Gets the binder. + + The binder. + + + + Gets or sets the bound instance errors. + + The bound instance errors. + + + + Gets the validation summary (key is the object instance) + + The validation summary per instance. + + + + Lazy initialized property with a hierarchical + representation of the flat data on + + + + + Lazy initialized property with a hierarchical + representation of the flat data on + + + + + Lazy initialized property with a hierarchical + representation of the flat data on + + + + + Exception for ViewComponent related errors. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + Provide easy to use Wizard-like support. + + + + MonoRail uses the DynamicAction infrastructure to provide + wizard support so we dont force + the programmer to inherit from a specific Controller + which can be quite undesirable in real world projects. + + Nevertheless we do require that the programmer + implements on the wizard controller. + + + + + + Initializes a new instance of the class. + + + + + Implementation of IDynamicActionProvider. + + Grab all steps related to the wizard + and register them as dynamic actions. + + + Wizard controller (must implement + + + + Invoked as "start" action + + + + + + Invoked when a step is accessed on the url, + i.e. http://host/mywizard/firststep.rails and + when an inner action is invoked like http://host/mywizard/firststep-save.rails + + + + + + Represents an empty (no-op) action. + + The controller. + + + + Determines whether all wizard specific information is on the user session. + + The controller. + + true if has session data; otherwise, false. + + + + + Starts the wizard by adding the required information to the + session and invoking + and detecting the first step. + + The controller. + if set to true, a redirect + will be issued to the first step. + + + + Resets the steps by invoking + on all steps instances. + + The controller. + + + + Represents a wizard step. In essence it is a controller, but with some subtle differences. + See the remarks for more information. + + + + + + + Implementors can optionally override + to customize the accessible action name and + in order to define which view + should be used (defaults to the step name) + + + Please note that an step might have actions as well, but it follows a different + convention to be accessed. You must use the wizard controller name, slash, the + step name, hifen, the action name. For example /MyWizard/AddressInformation-GetCountries.rails + Which would access the following action + + + + public class AddressInformation : WizardStepPage + { + public void GetCountries() + { + ... + } + } + + + Note that the RedirectToAction will always send to an internal action, so you should + omit the controller name for that. + + + + You can use a family of redirect methods to go back and forward on the wizard's + steps. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The binder. + + + + Invoked by . + + + This can be overriden but it's important to invoke the base + implementation. + + + + + + Invoked when the wizard is being access from the start + action. Implementors should perform session clean up (if + they actually use the session) to avoid stale data on forms. + + + + + Used to decide on which view to render. + + + + + Allow the step to assert some condition + before being accessed. Returning false + prevents the step from being processed but + before doing that you must send a redirect. + + + + + + Uses a simple heuristic to select the best method -- especially in the + case of method overloads. + + The action name + The avaliable actions + The request instance + The custom arguments for the action + + + + + Navigates within the wizard steps using optionally a form parameter + to dictate to where it should go. + + + By default this will invoke + however you can send a field form navigate.to to customize this. + The possible values for navigate.to are: + + previous + Invokes + first + Invokes + step name + A custom step name to navigate + + + + + + Navigates within the wizard steps using optionally a form parameter + to dictate to where it should go. + + + By default this will invoke + however you can send a field form navigate.to to customize this. + The possible values for navigate.to are: + + previous + Invokes + first + Invokes + step name + A custom step name to navigate + + + Query string parameters to be on the URL + + + + Navigates within the wizard steps using optionally a form parameter + to dictate to where it should go. + + + By default this will invoke + however you can send a field form navigate.to to customize this. + The possible values for navigate.to are: + + previous + Invokes + first + Invokes + step name + A custom step name to navigate + + + Query string parameters to be on the URL + + + + Sends a redirect to the next wizard step (if it exists) + + if no further step exists + + + + Sends a redirect to the next wizard step (if it exists) + + if no further step exists + + + + Sends a redirect to the next wizard step (if it exists) + + if no further step exists + + + + Sends a redirect to the previous wizard step + + + if no previous step exists (ie. already in the first one) + + + + Sends a redirect to the previous wizard step + + + if no previous step exists (ie. already in the first one) + + + + Sends a redirect to the previous wizard step + + + if no previous step exists (ie. already in the first one) + + + + Sends a redirect to the first wizard step + + + + + Sends a redirect to the first wizard step + + + + + Sends a redirect to the first wizard step + + + + + Sends a redirect to a custom step (that must exists) + + + + + Sends a redirect to a custom step (that must exists) + + + + + Sends a redirect to a custom step (that must exists) + + + + + For a wizard step, an internal action will always be named + with the controller name as a prefix , plus an hifen and finally + the action name. This implementation does exactly that. + + Raw action name + Properly formatted action name + + + + Gets the wizard controller. + + The wizard controller. + + + + Returns the action name that will be used + to represent this step. + + +
+
diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.dll b/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.dll new file mode 100644 index 0000000..65987ed Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.xml b/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.xml new file mode 100644 index 0000000..16f5849 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.JSONSupport.xml @@ -0,0 +1,129 @@ + + + + Castle.MonoRail.JSONSupport + + + + + Extends with the functionality. + In other words, enable biding of JSON formatted values on POCO objects. + + + + The following demonstrates how to bind a JSON querystring value representing a Car object instance + to a POCO Car object instance: + + The querystring: + + car={Wheels=4,Year=2007,Model='Cheap'} + + And you want to bind those values to a instance of yours Car class, which looks like this: + + public class Car + { + private int wheels, year; + private string model; + + public int Wheels + { + get { return wheels; } + set { wheels = value; } + } + + public int Year + { + get { return year; } + set { year = value; } + } + + public string Model + { + get { return model; } + set { model = value; } + } + } + + Using the and the , all you have to + do is to mark the method parameter with the attribute, like the following example: + + public void MyAction([JSONBinder("car")] Car car) + + + + + + Initializes a new instance of the class. + For use with , + make sure you are using Prototype 1.5.1 or later. + + The entry key, which is the form or + querystring key that identifies the JSON persisted content + + + + Calculates the param points. Implementors should return value equals or greater than + zero indicating whether the parameter can be bound successfully. The greater the value (points) + the more successful the implementation indicates to the framework + + The controller. + The parameter info. + + + + + Binds the specified parameter for the action. + + The controller. + The parameter info. + A instance based on the JSON values present in the . + + + + Binds the specified entry value to a instance of a given Type(). + + The entry value containing the JSON formatted content. + Type of the binded object. + A instance based on the JSON values present in the . + + + + Gets the entry key. + + + The entry key, which is the form or querystring key that identifies the JSON persisted content. + + The entry key. + + + + Provides utilities methods to work with JSON. + + + + + Converts a instance of the model to its JSON representation. + + The model. + The JSON representation of the model. + + You've constructed a car object instance, like this one: + + Car car = new Car(); + + car.Wheels = 4; + car.Model = "Cheap"; + car.Year = 2007; + + And to transform it to JSON, you must invoke the method passing the instance. + + helper.ToJSON(car) + + Which will generate the JSON string: + + {Wheels=4,Year=2007,Model='Cheap'} + + + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.dll b/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.dll new file mode 100644 index 0000000..1149256 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.xml b/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.xml new file mode 100644 index 0000000..39e8ae2 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.TestSupport.xml @@ -0,0 +1,704 @@ + + + + Castle.MonoRail.TestSupport + + + + + Base class for tests cases using the ASP.Net Runtime + to run the web project. Deprecated. + + + + + Reinstates the request. + + The serialized request. + + + + Gets the serialized request. + + + + + + Performs a GET operation on the specified path. + + + + DoGet("home/index.rails"); + + + The resource being request, for example home/index.rails + A list of key/value pair, for example name=johndoe + + + + Performs a GET operation on the specified path. + + + DoGet("home/index.rails"); + + The resource being request, for example home/index.rails + if set to true [resend cookies]. + A list of key/value pair, for example name=johndoe + + + + Performs a POST operation on the specified path. + + + + DoPost("producto/search.rails", "name=mac", "page=1"); + + + The resource being request, for example home/index.rails + A list of key/value pair, for example name=johndoe + + + + Performs a POST operation on the specified path. + + + + DoPost("producto/search.rails", "name=mac", "page=1"); + + + The resource being request, for example home/index.rails + if set to true [resend cookies]. + A list of key/value pair, for example name=johndoe + + + + Performs a HEAD operation on the specified path. + + + + DoHead("producto/search.rails", "name=mac", "page=1"); + + + The resource being request, for example home/index.rails + A list of key/value pair, for example name=johndoe + + + + Asserts that the response contains a number of nodes matching an XPath expression. + + The xpath expression to match against. + The number of expected nodes. + + + + Asserts that the response was NOT a redirect to the specified + url - for example check that your request was not sent to a login screen. + + + + + Asserts the return status code is less than 400 + + + + + Asserts that reply has exactly the samme + content of expectedContents + + + + + + Asserts that reply starts with + expectedContents + + + + + Asserts that reply ends with + expectedContents + + + + + Asserts that reply contains the specified + expectedContents + + + + + Asserts that reply have only whitespace characters + + + + + Asserts that reply contents match the specified pattern, ignoring any whitespaces + pattern + + + + + Asserts that reply contents match the specified pattern + pattern + + + + + Asserts that reply contents match the specified pattern + pattern + + + + + Asserts that reply does not contain + expectedContents + + + + + Asserts that the response was a redirect to the specified + url + + + + + Asserts that the content-type header is equals to the specified + value + + value to assert to + + + + Asserts that the content-type header starts with to the specified + value + + value to assert to + + + + Asserts that the content-type header ends with the specified + value + + value to assert to + + + + Asserts that response contains the specified header. + + value to assert to + + + + Asserts that PropertyBag contains the specified key. + + key name + + + + Asserts that PropertyBag's entry value equals to the specified value. + + key name + value to assert to + + + + Asserts that Flash contains the specified key. + + key name + + + + Asserts that Flash does not contains the specified key. + + key name + + + + Asserts that Flash's entry value equals to the specified value. + + key name + value to assert to + + + + Asserts that Session contains the specified key. + + key name + + + + Asserts that Session does not contains the specified key. + + key name + + + + Asserts that Session's entry value equals to the specified value. + + key name + value to assert to + + + + Asserts that the response contains the specified cookie. + + cookie name + + + + Asserts that Response cookie entry value equals to the specified value. + + cookie name + value to assert to + + + + Asserts that the response cookie has the specified expiration. + + cookie name + value to assert to + + + + Ensures that cookies (and therefore the session) will persist between requests, + emulating the behaviour of a genuine web client. + + + + + Gets the TestRequest + + + + + Gets the TestResponse + + + + + Gets the request response + + + + + Returns the sessionId related to the current session + + + + + Base class that set ups the necessary infrastructure + to test controllers without the need + for an ASP.Net Runtime. + + + + The following code is an example of a controller test: + + + [TestFixture] + public class LoginControllerTestCase : BaseControllerTest + { + private LoginController controller; + + [SetUp] + public void Init() + { + controller = new LoginController(); + PrepareController(controller); + } + + [Test] + public void Authenticate_Should_Use_The_AuthenticationService() + { + // set up a mock authentication service before + + controller.Authenticate("username", "my password", false); + + Assert.AreEqual(3, controller.PropertyBag.Count); + Assert.AreEqual("username", controller.PropertyBag["username"]); + Assert.AreEqual("my password", controller.PropertyBag["password"]); + Assert.AreEqual(false, controller.PropertyBag["autoLogin"]); + } + } + + + + The following is a more sophisticate test for an action that sends emails. + + + + [Test] + public void Register_Should_Add_Registration_Using_The_Repository() + { + Registration reg = new Registration("John Doe", "johndoe@gmail.com"); + + using(mockRepository.Record()) + { + registrationRepositoryMock.Add(reg); + } + + using(mockRepository.Playback()) + { + controller.Register(reg); // This action sends two emails + + Assert.IsTrue(HasRenderedEmailTemplateNamed("emailToManager")); + Assert.IsTrue(HasRenderedEmailTemplateNamed("emailToParticipant")); + + Assert.AreEqual("manager@gmail.com", MessagesSent[0].To); + Assert.AreEqual("johndoe@gmail.com", MessagesSent[1].To); + + Assert.AreEqual("Registration\\Success", controller.SelectedViewName); + } + } + + + + + + You must invoke -- or a different overload - + before making invocations to the controller. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The domain. + The domain prefix. + The port. + + + + Override to perform any pre-test set up + + + + + Prepares the controller giving it mock implementations + of the service it requires to function normally. + + The controller. + + + + Prepares the controller giving it mock implementations + of the service it requires to function normally. + + The controller. + The context initializer. + + + + Prepares the controller giving it mock implementations + of the service it requires to function normally. + + The controller. + Name of the controller. + Name of the action. + + + + Prepares the controller giving it mock implementations + of the service it requires to function normally. + + The controller. + Name of the area (cannot be null). + Name of the controller. + Name of the action. + + + + Constructs a mock context. + + Name of the area. + Name of the controller. + Name of the action. + + + + Builds the request. + + + + + + Builds the response. + + + + + + Builds the trace. + + + + + + Builds the a mock context. You can override this method to + create a special configured mock context. + + The request. + The response. + The trace. + The URL info. + + + + + Builds the URL info that represents the contextual Url. + + Name of the area. + Name of the controller. + Name of the action. + + + + + Determines whether a specified template was rendered -- to send an email. + + Name of the template. + + true if was rendered; otherwise, false. + + + + + Gets the cookies. + + The cookies. + + + + Gets the context. + + The context. + + + + Gets the request. + + The request. + + + + Gets the response. + + The response. + + + + Gets the trace. + + The trace. + + + + Gets the fake email messages sent. + + The messages sent. + + + + Gets the rendered email templates. + + The rendered email templates. + + + + Base class to test view components. + + + + The following test makes sure the component rendered the inner sections correctly. + + [TestFixture] + public class DiggStylePaginationTestCase : BaseViewComponentTest + { + private DiggStylePagination diggComponent; + private IPaginatedPage singlePage, secondPageOfThree; + + [SetUp] + public void Init() + { + diggComponent = new DiggStylePagination(); + singlePage = new Page(new string[] { "a", "b", "c" }, 1, 4, 1); + secondPageOfThree = new Page(new string[] { "a", "b", "c", "d" }, 2, 4, 10); + } + + [TearDown] + public void Terminate() + { + CleanUp(); + } + + [Test] + public void PageWithNoLinksInvokesStartAndEndSections() + { + List<string> actions = new List<string>(); + // pass mock inner sections to component + SectionRender["startblock"] = delegate(IDictionary context, TextWriter writer) { actions.Add("started"); }; + SectionRender["endblock"] = delegate(IDictionary context, TextWriter writer) { actions.Add("ended"); }; + SectionRender["link"] = delegate(IDictionary context, TextWriter writer) { actions.Add("link"); }; + + diggComponent.Page = singlePage; + + PrepareViewComponent(diggComponent); + diggComponent.Render(); + + // make sure component "rendered" inner sections + Assert.AreEqual(2, actions.Count); + Assert.AreEqual("started", actions[0]); + Assert.AreEqual("ended", actions[1]); + } + } + + + + + You must call before testing a view component instance + and you should call after each test case (use the TearDown). + + + + + Use this dictionary to add inner sections as available inner sections to + the view component. + + + + + This delegate is called when the viewcomponent renders its body. + + + + + This delegate is called when the viewcomponent renders a view + + + + + Initializes a new instance of the class. + + + + + Initialize the view component with mock services it needs to + be functional. + + The component instance. + + + + Cleans the up all state created to test a view component. + + + + + Builds the view engine. + + + + + + Builds the view component context. + + Name of the view component. + + + + + Gets the output -- ie what the viewcomponent wrote to the output stream. + + The output. + + + + Base controller test that uses the controller as a generic parameter. + + Controller type + + + + The typed controller instance + + + + + Base test for wizard steps. + + The wizard step page type + The wizard controller -- the one that implements + + + + The step typed field + + + + + Runs the page pre-condition + + + + + + Runs the step render method. + + + + + Used to integrate with the ASP.Net Runtime + + + + + Manages a instance. This is useful + to start/stop a lightweight webserver to run acceptance tests. + + + + + Starts the web server. The web project folder is going to be + extracted from the appSettings.webapp entry (from the configuration file) + + If the path is relative, it is going to be converted to an absolute path. + + + + + + Starts the web server using the specified web project path. Note + that the path must be absolute. + + The web application absolute path. + + + + Stops the web server. + + + + + Gets or sets the port to run the server. Defaults to 88. + + The port. + + + + Gets or sets the virtual dir to be used by the server. Defaults to / + + The virtual dir. + + + + Gets a value indicating whether this is started. + + true if started; otherwise, false. + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.dll b/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.dll new file mode 100644 index 0000000..1b9549d Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.xml b/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.xml new file mode 100644 index 0000000..b53c131 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.TransformFilters.xml @@ -0,0 +1,27 @@ + + + + Castle.MonoRail.TransformFilters + + + + + Post process the request via Markdown + + + + + Constructor of the MarkdownTransformFilter + + output stream + + + + Pulls the http stream through the Markdown filter. + + The content stream + Start of the stream + Lenght of the stream + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.dll b/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.dll new file mode 100644 index 0000000..af19c13 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.xml b/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.xml new file mode 100644 index 0000000..6934e93 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.Views.Brail.xml @@ -0,0 +1,316 @@ + + + + Castle.MonoRail.Views.Brail + + + + + This field holds all the cache of all the + compiled types (not instances) of all the views that Brail nows of. + + + + + used to hold the constructors of types, so we can avoid using + Activator (which takes a long time + + + + + This is used to add a reference to the common scripts for each compiled scripts + + + + + Resolves the template name into a file name. + + + + + Perform the actual compilation of the scripts + Things to note here: + * The generated assembly reference the Castle.MonoRail.MonoRailBrail and Castle.MonoRail.Framework assemblies + * If a common scripts assembly exist, it is also referenced + * The AddBrailBaseClassStep compiler step is added - to create a class from the view's code + * The ProcessMethodBodiesWithDuckTyping is replaced with ReplaceUknownWithParameters + this allows to use naked parameters such as (output context.IsLocal) without using + any special syntax + * The ExpandDuckTypedExpressions is replace with a derived step that allows the use of Dynamic Proxy assemblies + * The IntroduceGlobalNamespaces step is removed, to allow to use common variables such as + date and list without accidently using the Boo.Lang.BuiltIn versions + + + + + + + + Base class for all the view scripts, this is the class that is responsible for + support all the behind the scenes magic such as variable to PropertyBag trasnlation, + resources usage, etc. + + + + + This is used by layout scripts only, for outputing the child's content + + + + + used to hold the ComponentParams from the view, so their views/sections could access them + + + + + usually used by the layout to refer to its view, or a subview to its parent + + + + + Reference to the DSL service + + + + + Initializes a new instance of the class. + + The view engine. + The output. + The context. + The controller. + + + + Runs this instance, this is generated by the script + + + + + Output the subview to the client, this is either a relative path "SubView" which + is relative to the current /script/ or an "absolute" path "/home/menu" which is + actually relative to ViewDirRoot + + + + + + Similiar to the OutputSubView(string) function, but with a bunch of parameters that are used + just for this subview. This parameters are /not/ inheritable. + + An empty string, just to make it possible to use inline ${OutputSubView("foo")} + + + + Outputs the sub view to the writer + + Name of the subview. + The writer. + The parameters. + + + + Get the sub view file name, if the subview starts with a '/' + then the filename is considered relative to ViewDirRoot + otherwise, it's relative to the current script directory + + + + + + + this is called by ReplaceUnknownWithParameters step to create a more dynamic experiance + any uknown identifier will be translate into a call for GetParameter('identifier name'). + This mean that when an uknonwn identifier is in the script, it will only be found on runtime. + + + + + + + this is called by ReplaceUnknownWithParameters step to create a more dynamic experiance + any uknown identifier with the prefix of ? will be translated into a call for + TryGetParameter('identifier name without the ? prefix'). + This method will return null if the value it not found. + + + + + + + Gets the parameter - implements the logic for searching parameters. + + The name. + + + + + Sets the parent. + + My parent. + + + + Allows to check that a parameter was defined + + + + + + + This is required because we may want to replace the output stream and get the correct + behavior from components call RenderText() or RenderSection() + + + + + Note that this will overwrite any existing property. + + + + + Adds the view component newProperties. + This will be included in the parameters searching, note that this override + the current parameters if there are clashing. + The search order is LIFO + + The newProperties. + + + + Removes the view component properties, so they will no longer be visible to the views. + + The properties to remove. + + + + Initialize all the properties that a script may need + One thing to note here is that resources are wrapped in ResourceToDuck wrapper + to enable easy use by the script + + + + + + + The path of the script, this is filled by AddBrailBaseClassStep + and is used for sub views + + + + + Gets the view engine. + + The view engine. + + + + Gets the DSL provider + + Reference to the current DSL Provider + + + + Gets the flash. + + The flash. + + + + Gets the output stream. + + The output stream. + + + + Gets or sets the child output. + + The child output. + + + + Gets the properties. + + The properties. + + + + + + + + + Defines the behavior when a property is read + + Property name. + Parameters for indexers + value back to the template + + + + Defines the behavior when a property is written + + Property name. + Parameters for indexers + The value to assign. + + + + Invokes the specified method. + + The method name. + The method arguments. + value back to the template + + + + Delegates to the generator + + + A that represents the current . + + + + + Will find all the (outer most ${} expressions in the code, and return their positions). + Smart enough to figure out $${} escaping, but not much more + + + + + Initializes a new instance of the class. + + The parent. + The body. + The name. + The text. + The parameters. + + + + Pendent + + + + + + + Renders the the specified section + + Name of the section. + The writer. + + + + This is here because we need to overcome a tendecy of Dynamic Proxy to generate virtual override that + do not match exactly what the compiler does. + This means that when you do GetMethod("Foo") and DP has proxied it, you would get an exception because it would + recognize two methods with this name. + We recognize when we are trying to invoke something that DP has build and act accordingly. + + The code is mostly taken fro Boo.Lang.Runtime.RuntimeServices, and modified to understand that when the type is from DP, is should + use DeclareOnly + + + + diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.dll b/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.dll new file mode 100644 index 0000000..1fd65f1 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.dll differ diff --git a/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.xml b/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.xml new file mode 100644 index 0000000..c497a4b --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.MonoRail.WindsorExtension.xml @@ -0,0 +1,124 @@ + + + + Castle.MonoRail.WindsorExtension + + + + + Bridge between the windsor controlled controller tree and + the monorail service provider. + + + + + Construct the controller tree accessor + + + + + Register a controller on the tree. If the specified + area name matches the current node, the controller is + register on the node itself, otherwise on the right or + on the left node. + + + Note that the controller is an object. That allows + different implementation of a controller factory to register + different representation of what a controller is (a name, a descriptor etc) + + The area name, or String.Empty + The controller name + The controller representation + + + + Returns a controller previously registered. + + The area name, or String.Empty + The controller name + The controller representation or null + + + + Default implementation of + which requests components from the + + + + + This interface allow a wizard controller + to request wizard steps from the IKernel without + directly refering to it + + + + + Requests a by + the key the component was registered on the + controller + + The key used to register the component + The step page instance + + + + Requests a by + the key the component was registered on the + controller + + + The step page instance + + + + Initializes a new instance of the class. + + The kernel. + + + + Requests a by + the key the component was registered on the + controller + + The key used to register the component + The step page instance + + + + Requests a by + the key the component was registered on the + controller + + + The step page instance + + + + Facility responsible for registering the controllers in + the controllerTree. + + + + + Custom implementation of + that uses the WindsorContainer to obtain the + controller instances. + + + + + Custom implementation of + that uses the WindsorContainer to obtain + instances, and, if not available, uses the default implementation + of . + + + + + Pendent + + + + diff --git a/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.dll b/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.dll new file mode 100644 index 0000000..82f3061 Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.xml b/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.xml new file mode 100644 index 0000000..97272be --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Services.Logging.Log4netIntegration.xml @@ -0,0 +1,59 @@ + + + + Castle.Services.Logging.Log4netIntegration + + + + + Creates a new extended logger. + + + + + Creates a new extended logger. + + + + + Exposes the Global Context of the extended logger. + + + + + Exposes the Thread Context of the extended logger. + + + + + Exposes the Thread Stack of the extended logger. + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.dll b/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.dll new file mode 100644 index 0000000..ac5db5b Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.xml b/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.xml new file mode 100644 index 0000000..4bd3031 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Services.Logging.NLogIntegration.xml @@ -0,0 +1,339 @@ + + + + Castle.Services.Logging.NLogIntegration + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Determines if messages of priority "debug" will be logged. + + True if "debug" messages will be logged. + + + + Determines if messages of priority "info" will be logged. + + True if "info" messages will be logged. + + + + Determines if messages of priority "warn" will be logged. + + True if "warn" messages will be logged. + + + + Determines if messages of priority "error" will be logged. + + True if "error" messages will be logged. + + + + Determines if messages of priority "fatal" will be logged. + + True if "fatal" messages will be logged. + + + + Exposes the Global Context of the extended logger. + + + + + Exposes the Thread Context of the extended logger. + + + + + Exposes the Thread Stack of the extended logger. + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Services.Transaction.dll b/slips/build/lib/castle/bin/Castle.Services.Transaction.dll new file mode 100644 index 0000000..e887efa Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Services.Transaction.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Services.Transaction.xml b/slips/build/lib/castle/bin/Castle.Services.Transaction.xml new file mode 100644 index 0000000..287d354 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Services.Transaction.xml @@ -0,0 +1,439 @@ + + + + Castle.Services.Transaction + + + + + Helper abstract class for implementors. + + + + + Represents the contract for a transaction. + + + + + Starts the transaction. Implementors + should activate the apropriate resources + in order to start the underlying transaction + + + + + Succeed the transaction, persisting the + modifications + + + + + Cancels the transaction, rolling back the + modifications + + + + + Signals that this transaction can only be rolledback. + This is used when the transaction is not being managed by + the callee. + + + + + Register a participant on the transaction. + + + + + + Registers a synchronization object that will be + invoked prior and after the transaction completion + (commit or rollback) + + + + + + Returns the current transaction status. + + + + + Transaction context. Can be used by applications. + + + + + Initializes a new instance of the class. + + + + + The supported transaction mode for the components. + + + + + + + + + + transaction context will be created + managing internally a connection, no + transaction is opened though + + + + + transaction context will be created if not present + + + + + a new transaction context will be created + + + + + an existing appropriate transaction context + will be joined if present + + + + + The supported isolation modes. + + + + + Indicates that the target class wants to use + the transactional services. + + + + + Indicates the transaction support for a method. + + + + + Declares unspecified values for transaction and isolation, which + means that the transaction manager will use the default values + for them + + + + + Declares the transaction mode, but omits the isolation, + which means that the transaction manager should use the + default value for it. + + + + + + Declares both the transaction mode and isolation + desired for this method. The transaction manager should + obey the declaration. + + + + + + + Returns the + + + + + Returns the + + + + + Gets or sets a value indicating whether the transaction should be distributed. + + + true if a distributed transaction should be created; otherwise, false. + + + + + Abstracts approaches to keep transaction activities + that may differ based on the environments. + + + + + Gets the current activity. + + The current activity. + + + + Initializes a new instance of the class. + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + An object of type used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the property. + + + The immediate caller does not have infrastructure permission. 2 + + + + Gets the current activity. + + The current activity. + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The class name is null or is zero (0). + The info parameter is null. + + + + TODO: Ensure this class is thread-safe + + + + + Manages the creation and disposal of instances. + + + + + Creates a transaction. + + The transaction mode. + The isolation mode. + + + + + Creates a transaction. + + The transaction mode. + The isolation mode. + if set to true, the TM will create a distributed transaction. + + + + + Should guarantee the correct disposal of transaction + resources. + + + + + + Raised when a top level transaction was created + + + + + Raised when a child transaction was created + + + + + Raised when the transaction was committed successfully + + + + + Raised when the transaction was rolledback successfully + + + + + Raised when the transaction was disposed + + + + + Returns the current . + The transaction manager will probably need to + hold the created transaction in the thread or in + some sort of context. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The activity manager. + + + + Creates a transaction. + + The transaction mode. + The isolation mode. + + + + + Creates a transaction. + + The transaction mode. + The isolation mode. + if set to true, the TM will create a distributed transaction. + + + + + Factory method for creating a transaction. + + The transaction mode. + The isolation mode. + if set to true, the TM will create a distributed transaction. + A transaction + + + + Gets or sets the activity manager. + + The activity manager. + + + + Gets or sets the logger. + + The logger. + + + + Represents a contract for a resource that + can be enlisted within transactions. + + + + + Implementors should start the + transaction on the underlying resource + + + + + Implementors should commit the + transaction on the underlying resource + + + + + Implementors should rollback the + transaction on the underlying resource + + + + + Depicts a synchronization contract. + + Code can be executed before and after the + transaction completes + + + + + + Implementors may have code executing + just before the transaction completes + + + + + Implementors may have code executing + just after the transaction completes + + + + + + + + + + Implements a transaction root. + + + + + Emulates a standalone transaction but in fact it + just propages a transaction. + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + An object of type used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the property. + + + The immediate caller does not have infrastructure permission. 2 + + + + Gets the current activity. + + The current activity. + + + + Initializes a new instance of the class. + + The mode. + The isolation mode. + + + + Implementors should start the + transaction on the underlying resource + + + + + Implementors should commit the + transaction on the underlying resource + + + + + Implementors should rollback the + transaction on the underlying resource + + + + diff --git a/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.dll b/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.dll new file mode 100644 index 0000000..387db4b Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.dll differ diff --git a/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.xml b/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.xml new file mode 100644 index 0000000..30a93c2 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.VSNetIntegration.CastleWizards.xml @@ -0,0 +1,189 @@ + + + + Castle.VSNetIntegration.CastleWizards + + + + + Summary description for ARIntegrationPanel. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for ARPanel. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for ConnStringPanel. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for ContainerIntegrationPanel. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for LoggingPanel. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for NHIntegrationPanel. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for WizardDialog. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Fired by panels + + + + + Create a valid C# identifier from an input string + + + + + + + + + + + diff --git a/slips/build/lib/castle/bin/Castle.Windsor.dll b/slips/build/lib/castle/bin/Castle.Windsor.dll new file mode 100644 index 0000000..c577e4a Binary files /dev/null and b/slips/build/lib/castle/bin/Castle.Windsor.dll differ diff --git a/slips/build/lib/castle/bin/Castle.Windsor.xml b/slips/build/lib/castle/bin/Castle.Windsor.xml new file mode 100644 index 0000000..6735703 --- /dev/null +++ b/slips/build/lib/castle/bin/Castle.Windsor.xml @@ -0,0 +1,1238 @@ + + + + Castle.Windsor + + + + + Implementation of that assumes ownership of the + wrapped . If this adapter is disposed, the underlying + is diposed as well. + + + + + Implementation of that does not assume ownership of the + wrapped . + + + + + Integrates the to the System.ComponentModel + and System.ComponentMode.Design infrastructure. + + + + + + + + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + + + + + + Constructs an initial ContainerWrapper. + + The to adapt. + + + + Constructs an initial ContainerWrapper. + + The to adapt. + The parent . + + + + Adds the specified to the at the end of the list. + + The to add. + + + + Adds the specified to the at the end of the list, + and assigns a name to the component. + + The to add. + The unique, case-insensitive name to assign to the component, or null. + + + + Removes a component from the . + + The to remove + + + + Gets the service object of the specified type. + + The type of service. + An object inplementing service, or null. + + + + Adds the specified service to the service container. + + The type of service to add. + The instance of the service to add. + + + + Adds the specified service to the service container. + + The type of service to add. + A callback object that is used to create the service. + + + + Adds the specified service to the service container, and optionally + promotes the service to any parent service containers. + + The type of service to add. + The instance of the service to add. + true to promote this request to any parent service containers. + + + + Adds the specified service to the service container, and optionally + promotes the service to parent service containers. + + The type of service to add. + A callback object that is used to create the service. + true to promote this request to any parent service containers. + + + + Removes the specified service type from the service container. + + The type of service to remove. + + + + Removes the specified service type from the service container, + and optionally promotes the service to parent service containers. + + The type of service to remove. + true to promote this request to any parent service containers. + + + + Determins if the service type represents an intrinsic service. + + The type of service to remove. + true if the service type is an intrinsic service. + + + + Determins if the specified service type exists in the service container. + + The type of service to remove. + true if the service type exists. + + + + Releases the resources used by the component. + + + + + Releases the resources used by the component. + + true if disposing. + + + + Gets or sets the associated with the . + + + + + Event that notifies the disposal of the . + + + + + Gets all the components in the . + + + + + Gets the adapted + + + + + Constructs a default ContainerAdapter. + + + + + Constructs a chained ContainerAdapter. + + The parent . + + + + Constructs an initial ContainerAdapter. + + The to adapt. + + + + Constructs an initial ContainerAdapter. + + The to adapt. + The parent . + + + + Custom activator to create the instance on demand. + + + + + Implementation of . + Do not support configuration inheritance. + + + + + Accepts the specified node. + Check if node has the same name as the processor and the node.NodeType + is in the AcceptNodeTypes List + + The node. + + + + + Convert and return child parameter into an XmlElement + An exception will be throw in case the child node cannot be converted + + Parent node + Node to be converted + child node as XmlElement + + + + + + + + + + + + attributeValue + + propertyValue + + + + + + + Processes element attributes. + if the attribute is include will append to the element + all contents from the file. + if the attribute has a property reference the reference will be + expanded + + The element. + + + + + Properties names can contain a-zA-Z0-9_. + i.e. #!{ my_node_name } || #{ my.node.name } + spaces are trimmed + + + + + Processes the string. + + The node. + The value. + The context. + + + + Accepts the specified node. + Check if node has the same name as the processor and the node.NodeType + is in the AcceptNodeTypes List + NOTE: since the BatchRegistrationFacility already uses an include + element we will distringish between both by looking for the presence of an uri attribute + we should revisit this later by using xml-namespaces + + The node. + + + + + + + + + + + + + attributeValue + + propertyValue + + + + + + + Initializes a new instance of the class. + + Name of the environment. + + + + Initializes a new instance of the class. + + Name of the environment. + The resource sub system. + + + + Processes the element. + + The element. + + + + + Processes the element. + + The element. + + + + + Make a shallow copy of the nodeList. + + The nodeList to be copied. + + + + + Pendent + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the environment. + The resource sub system. + + + + Initializes a new instance of the class. + + + + + Provides common methods for those who wants + to implement + + + + + Interpreter of a specific language to describe + configuration nodes in a hierachical manner. + + + + + Should obtain the contents from the resource, + interpret it and populate the + accordingly. + + + + + + + Gets or sets the name of the environment. + + The name of the environment. + + + + Exposes the reference to + which the interpreter is likely to hold + + + + + Should obtain the contents from the resource, + interpret it and populate the + accordingly. + + + + + + + Exposes the reference to + which the interpreter is likely to hold + + + + + + Gets or sets the name of the environment. + + The name of the environment. + + + + Reads the configuration from a XmlFile. Sample structure: + + <configuration> + <facilities> + <facility id="myfacility"> + + </facility> + </facilities> + + <components> + <component id="component1"> + + </component> + </components> + </configuration> + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The filename. + + + + Initializes a new instance of the class. + + The source. + + + + If a config value is an empty string we return null, this is to keep + backward compability with old code + + + + + Gets or sets the kernel. + + The kernel. + + + + Default implementation. + + + + + Installs the components and facilities based on the + information on the configuration store. + + + + + Perform installation. + + Target container + Configuration store + + + + Initializes a new instance of the class. + + + + + Perform installation. + + Target container + Configuration store + + + + Obtains the interceptors associated with the component. + + The kernel instance + The component model + interceptors array + + + + This implementation of relies + on DynamicProxy to expose proxy capabilies. + + + Note that only virtual methods can be intercepted in a + concrete class. However, if the component + was registered with a service interface, we proxy + the interface and the methods don't need to be virtual, + + + + + Constructs a DefaultProxyFactory + + + + + Creates the proxy for the supplied component. + + The kernel. + The target. + The model. + The constructor arguments. + The component proxy. + + + + Determines if the component requiries a target instance for proxying. + + The kernel. + The model. + true if an instance is required. + + + + Gets the environment information (name). Implementors should + use to define their environments and how those affect the configuration. + It is also used by the + to define a flag with the environment name. + + + + + Gets the name of the environment. + + + + + + The IWindsorContainer interface exposes all the + functionality the Windsor implements. + + + + + Registers a facility within the kernel. + + The key by which the gets indexed. + The to add to the container. + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The to manage. + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The service that the component implements. + The to manage. + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The service that the component implements. + The to manage. + The with which to manage the component. + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + + Adds a component to be managed by the container. + The key to obtain the component will be the FullName of the type. + + The to manage. + + + + Adds a component to be managed by the container + + The to manage. + The key by which the component gets indexed. + + + + Adds a component to be managed by the container. + The key to obtain the component will be the FullName of the type. + + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The to manage. + The key by which the component gets indexed. + The with which to manage the component. + + + + Adds a component to be managed by the container + The key to obtain the component will be the FullName of the type. + + The service that the component implements. + The to manage. + + + + Adds a component to be managed by the container + + The service that the component implements. + The to manage. + The key by which the component gets indexed. + + + + Adds a component to be managed by the container + The key to obtain the component will be the FullName of the type. + + The service that the component implements. + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The service that the component implements. + The to manage. + The key by which the component gets indexed. + The with which to manage the component. + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + The key to obtain the component will be the FullName of the type. + + + + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + The key to obtain the component will be the FullName of the type. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + + Returns a component instance by the key + + + + + + + Returns a component instance by the key + + + + + + + + Returns a component instance by the key + + + + + + + + Returns a component instance by the service + + + + + + + Returns a component instance by the service + + + + + + + + Releases a component instance + + + + + + Registers a subcontainer. The components exposed + by this container will be accessible from subcontainers. + + + + + + Remove a child container + + + + + + Gets a child container instance by name. + + The container's name. + The child container instance or null + + + + Returns a component instance by the service + + Service type + The component instance + + + + Returns a component instance by the service + + Service type + + The component instance + + + + Returns a component instance by the key + + Component's key + Service type + The Component instance + + + + Returns a component instance by the key + + Service type + Component's key + + The Component instance + + + + Returns a component instance by the key + + + + + + + + + Gets the container's name + + + Only useful when child containers are being used + + The container's name. + + + + Shortcut to + + + + + Shortcut to + + + + + Returns the inner instance of the MicroKernel + + + + + Gets or sets the parent container if this instance + is a sub container. + + + + + Implementation of + which delegates to implementation. + + + + + Constructs a container without any external + configuration reference + + + + + Constructs a container using the specified + implementation. + + The instance of an implementation. + + + + Constructs a container using the specified + implementation. + + The instance of an implementation. + + + + Initializes a new instance of the class. + + The interpreter. + The environment info. + + + + Initializes a new instance of the class using a + xml file to configure it. + + Equivalent to the use of new WindsorContainer(new XmlInterpreter(xmlFile)) + + + The XML file. + + + + Constructs a container using the specified + implementation. Rarely used. + + + This constructs sets the Kernel.ProxyFactory property to + + + Kernel instance + Installer instance + + + + Constructs a container using the specified + implementation. Rarely used. + + + This constructs sets the Kernel.ProxyFactory property to + + + Container's name + Kernel instance + Installer instance + + + + Constructs with a given . + + A instance of an . + + + + Constructs a container assigning a parent container + before starting the dependency resolution. + + The instance of an + The instance of an implementation + + + + Initializes a new instance of the class. + + The container's name. + The parent. + The interpreter. + + + + Registers a facility within the kernel. + + + + + + + Adds a component to be managed by the container + + + + + + + Adds a component to be managed by the container + + + + + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The key by which the component gets indexed. + The service that the component implements. + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container. + The key to obtain the component will be the FullName of the type. + + The to manage. + + + + Adds a component to be managed by the container + + The to manage. + The key by which the component gets indexed. + + + + Adds a component to be managed by the container. + The key to obtain the component will be the FullName of the type. + + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The service that the component implements. + The to manage. + The key by which the component gets indexed. + + + + Adds a component to be managed by the container + The key to obtain the component will be the FullName of the type. + + The service that the component implements. + The to manage. + The with which to manage the component. + + + + Adds a component to be managed by the container + + The to manage. + The key by which the component gets indexed. + The with which to manage the component. + + + + Adds a component to be managed by the container + The key to obtain the component will be the FullName of the type. + + The service that the component implements. + The to manage. + + + + Adds a component to be managed by the container + + The service that the component implements. + The to manage. + The key by which the component gets indexed. + The with which to manage the component. + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + The key to obtain the component will be the FullName of the type. + + + + + + + Adds a concrete class as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + The key to obtain the component will be the FullName of the type. + + + + + + + + Adds a concrete class and an interface + as a component and specify the extended properties. + Used by facilities, mostly. + + + + + + + + + Returns a component instance by the key + + + + + + + Returns a component instance by the service + + + + + + + + Returns a component instance by the key + + + + + + + + Returns a component instance by the service + + + + + + + Returns a component instance by the key + + + + + + + + + + + + + + + + + Returns a component instance by the service + + + + + + + + Returns a component instance by the key + + + + + + + + Returns a component instance by the service + + + + + + + Returns a component instance by the key + + + + + + + Releases a component instance + + + + + + Registers a subcontainer. The components exposed + by this container will be accessible from subcontainers. + + + + + + Removes (unregisters) a subcontainer. The components exposed by this container + will no longer be accessible to the child container. + + + + + + Gets a child container instance by name. + + The container's name. + The child container instance or null + + + + Gets the service object of the specified type. + + + A service object of type serviceType. + + An object that specifies the type of service object to get. + + + + Gets the service object of the specified type. + + + A service object of type serviceType. + + + + + Executes Dispose on underlying + + + + + Gets the container's name + + + Only useful when child containers are being used + + The container's name. + + + + Returns the inner instance of the MicroKernel + + + + + Gets or sets the parent container if this instance + is a sub container. + + + + + Shortcut to the method + + + + + Shortcut to the method + + + + diff --git a/slips/build/lib/log4net/bin/log4net.dll b/slips/build/lib/log4net/bin/log4net.dll new file mode 100644 index 0000000..ffc57e1 Binary files /dev/null and b/slips/build/lib/log4net/bin/log4net.dll differ diff --git a/slips/build/lib/log4net/bin/log4net.xml b/slips/build/lib/log4net/bin/log4net.xml new file mode 100644 index 0000000..fab7af2 --- /dev/null +++ b/slips/build/lib/log4net/bin/log4net.xml @@ -0,0 +1,28655 @@ + + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns true. + + + + true if the appender requires a layout object, otherwise false. + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Connects to the database. + + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Prepares the database command and initialize the parameters. + + + + + Flag to indicate if we are using a command object + + + + Set to true when the appender is to use a prepared + statement or stored procedure to insert into the database. + + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + The database command. + + + + + Database connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Ansi code to reset terminal + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes events to the system event log. + + + + The EventID of the event log entry can be + set using the EventLogEventID property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative model, , only holds a + write lock while the appender is writing a logging event. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checked if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are two built in locking models, and . + The former locks the file from the start of logging to the end and the + later lock only for the minimal amount of time when logging each message. + + + The default locking model is the . + + + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + the current list of events that have been appended. + + + Use the method to clear the + current list of events. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Syslog port 514 + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + FileName provided in configuration. Used for rolling properly + + + + + The 1st of January 1970 in UTC + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + Send the email message + + the body text to include in the mail + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is passed as the value for the category name to the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Watch a specified config file used to configure a repository + + The repository to configure. + The configuration file to watch. + + + Watch a specified config file used to configure a repository + + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + Initializes a new instance of the class. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Initialize the default repository selector + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + The logger that this object is wrapping + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + The time the event was logged + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored in the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + Initializes a new instance of the class. + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration to + pass to the + method. + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + Writer adapter that ignores Close + + + + + The string to replace invalid chars with + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Total number of bytes written. + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is printed on the standard error output stream. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an Error + + The error message. + The exception. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an error + + The error message. + + + Print a the error message passed as parameter on the standard + error output stream. + + + + + + Flag to indicate if it is the first error + + + + + String to prefix each message with + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Wrapper class used to map converter names to converter types + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + The name of the conversion pattern + + + + Gets or sets the name of the conversion pattern + + + + + + Gets or sets the type of the converter + + + The type of the converter + + + + Gets or sets the type of the converter + + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + The thread local data slot to use to store a PropertiesDictionary. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + Default constructor + + + + Default constructor + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global context properties instance + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + diff --git a/slips/build/local.properties.template b/slips/build/local.properties.template new file mode 100644 index 0000000..db6e5ba --- /dev/null +++ b/slips/build/local.properties.template @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/slips/build/project.build b/slips/build/project.build new file mode 100644 index 0000000..0468f12 --- /dev/null +++ b/slips/build/project.build @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/project.database.build b/slips/build/project.database.build new file mode 100644 index 0000000..9c48dba --- /dev/null +++ b/slips/build/project.database.build @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/project.deploy.build b/slips/build/project.deploy.build new file mode 100644 index 0000000..a4b9e67 --- /dev/null +++ b/slips/build/project.deploy.build @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/project.properties.build b/slips/build/project.properties.build new file mode 100644 index 0000000..e0f8b80 --- /dev/null +++ b/slips/build/project.properties.build @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/sql/Data/authorize.sql.template b/slips/build/sql/Data/authorize.sql.template new file mode 100644 index 0000000..f1af498 --- /dev/null +++ b/slips/build/sql/Data/authorize.sql.template @@ -0,0 +1,4 @@ +use [@initial.catalog@]; +GO +INSERT INTO Authorize(UserName,Password,CustomerID) VALUES('jdoe','p@ssword',1000) +GO diff --git a/slips/build/sql/Data/boat.sql.template b/slips/build/sql/Data/boat.sql.template new file mode 100644 index 0000000..0387b5c --- /dev/null +++ b/slips/build/sql/Data/boat.sql.template @@ -0,0 +1,5 @@ +use [@initial.catalog@]; +GO +INSERT INTO Boat(RegistrationNumber,Manufacturer,ModelYear,Length,CustomerID) +VALUES('AR8373-223-2','Yamaha',2005,18,1000) +GO \ No newline at end of file diff --git a/slips/build/sql/Data/customer.sql.template b/slips/build/sql/Data/customer.sql.template new file mode 100644 index 0000000..f069fa5 --- /dev/null +++ b/slips/build/sql/Data/customer.sql.template @@ -0,0 +1,4 @@ +use [@initial.catalog@]; +GO +INSERT INTO Customer(FirstName,LastName,Phone,City) VALUES('John','Doe','555-545-1212','Phoenix'); +GO \ No newline at end of file diff --git a/slips/build/sql/Data/dock.sql.template b/slips/build/sql/Data/dock.sql.template new file mode 100644 index 0000000..55a4964 --- /dev/null +++ b/slips/build/sql/Data/dock.sql.template @@ -0,0 +1,6 @@ +use [@initial.catalog@]; +GO +INSERT INTO Dock(DockName, LocationId, WaterService, ElectricalService) VALUES('Dock A', 1, 1, 1) +INSERT INTO Dock(DockName, LocationId, WaterService, ElectricalService) VALUES('Dock B', 1, 1, 0) +INSERT INTO Dock(DockName, LocationId, WaterService, ElectricalService) VALUES('Dock C', 1, 0, 1) +GO \ No newline at end of file diff --git a/slips/build/sql/Data/lease.sql.template b/slips/build/sql/Data/lease.sql.template new file mode 100644 index 0000000..c85a53d --- /dev/null +++ b/slips/build/sql/Data/lease.sql.template @@ -0,0 +1,4 @@ +use [@initial.catalog@]; +GO +INSERT INTO Lease(StartDate,EndDate,SlipID,CustomerID,LeaseTypeID) VALUES('09-12-2007','09-12-2008',1030,1000,4) +GO \ No newline at end of file diff --git a/slips/build/sql/Data/leasetype.sql.template b/slips/build/sql/Data/leasetype.sql.template new file mode 100644 index 0000000..b3c85b3 --- /dev/null +++ b/slips/build/sql/Data/leasetype.sql.template @@ -0,0 +1,7 @@ +use [@initial.catalog@]; +GO +INSERT INTO LeaseType(LeaseTypeName, StandardRateAmount) VALUES('Daily', 25.50) +INSERT INTO LeaseType(LeaseTypeName, StandardRateAmount) VALUES('Weekly', 145.50) +INSERT INTO LeaseType(LeaseTypeName, StandardRateAmount) VALUES('Monthly', 500.00) +INSERT INTO LeaseType(LeaseTypeName, StandardRateAmount) VALUES('Yearly', 5000.00) +GO diff --git a/slips/build/sql/Data/location.sql.template b/slips/build/sql/Data/location.sql.template new file mode 100644 index 0000000..1e17c16 --- /dev/null +++ b/slips/build/sql/Data/location.sql.template @@ -0,0 +1,5 @@ +use [@initial.catalog@]; +GO +INSERT INTO Location(LocationName) VALUES('Inland Lake') +INSERT INTO Location(LocationName) VALUES('Sab Diego') +GO diff --git a/slips/build/sql/Data/slip.sql.template b/slips/build/sql/Data/slip.sql.template new file mode 100644 index 0000000..8b70a03 --- /dev/null +++ b/slips/build/sql/Data/slip.sql.template @@ -0,0 +1,157 @@ +use [@initial.catalog@]; +GO +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,1) + +-- Dock B slips +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,16,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,18,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(8,20,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,26,2) + +-- Dock C slips +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,22,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(10,24,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +INSERT INTO SLIP(SlipWidth, SlipLength, DockId) VALUES(12,28,3) +GO diff --git a/slips/build/sql/ddl/database.sql.template b/slips/build/sql/ddl/database.sql.template new file mode 100644 index 0000000..dc102f2 --- /dev/null +++ b/slips/build/sql/ddl/database.sql.template @@ -0,0 +1,15 @@ +/**************************************** PART 1 CREATE DATABASE ******************************/ + +USE [master] +GO + +IF EXISTS(SELECT * FROM Sysdatabases WHERE NAME LIKE '@initial.catalog@') + DROP DATABASE [@initial.catalog@] + GO + +/****** Object: Database [InlandMarina] Script Date: 11/12/2007 08:39:11 ******/ +CREATE DATABASE [@initial.catalog@] ON PRIMARY +( NAME = N'@initial.catalog@', FILENAME = N'@database.path@\@initial.catalog@.mdf' , SIZE = 2240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) + LOG ON +( NAME = N'@initial.catalog@_log', FILENAME = N'@database.path@\@initial.catalog@.ldf' , SIZE = 768KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) +GO \ No newline at end of file diff --git a/slips/build/sql/ddl/security.sql.template b/slips/build/sql/ddl/security.sql.template new file mode 100644 index 0000000..27c5e22 --- /dev/null +++ b/slips/build/sql/ddl/security.sql.template @@ -0,0 +1,40 @@ +use [@initial.catalog@] +GO +IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'@asp.net.account@') +CREATE LOGIN [@asp.net.account@] FROM WINDOWS WITH DEFAULT_DATABASE=[@initial.catalog@] +GO + +if not exists (select * from dbo.sysusers where name = N'@asp.net.account@' and uid < 16382) + EXEC sp_grantdbaccess N'@asp.net.account@', N'@asp.net.account@' +GO + +if not exists (select * from dbo.sysusers where name = N'WebUser' and uid > 16399) + EXEC sp_addrole N'WebUser' +GO + +exec sp_addrolemember N'WebUser', N'@asp.net.account@' +GO + +use [@initial.catalog@] +GO + +GRANT SELECT ON Dock TO WebUser; +GRANT SELECT ON LeaseType TO WebUser; +GRANT SELECT ON Location TO WebUser; +GRANT SELECT ON Slip TO WebUser; +GRANT SELECT ON Lease TO WebUser; +GRANT SELECT ON Customer TO WebUser; +GRANT SELECT ON Authorize TO WebUser; +GRANT SELECT ON Boat TO WebUser; + +GRANT UPDATE ON Customer TO WebUser; +GRANT UPDATE ON Authorize TO WebUser; + +GRANT INSERT ON Authorize TO WebUser; +GRANT INSERT ON Boat TO WebUser; +GRANT INSERT ON Customer TO WebUser; +GRANT INSERT ON Lease TO WebUser; + +GRANT DELETE ON Boat TO WebUser; +GRANT DELETE ON Lease TO WebUser; +GO diff --git a/slips/build/sql/ddl/tables.sql.template b/slips/build/sql/ddl/tables.sql.template new file mode 100644 index 0000000..db741d6 --- /dev/null +++ b/slips/build/sql/ddl/tables.sql.template @@ -0,0 +1,166 @@ +USE [@initial.catalog@] +Go + +/****************************** CREATE LOCATION TABLE ***************************************/ + +CREATE TABLE [dbo].[Location]( + [LocationId] [int] IDENTITY(1,1) NOT NULL, + [LocationName] [varchar](50) NOT NULL, + CONSTRAINT [PK_Location] PRIMARY KEY CLUSTERED +( + [LocationId] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO + +/******************************** CREATE DOCK TABLE ****************************************/ + +CREATE TABLE [dbo].[Dock]( + [DockID] [int] IDENTITY(1,1) NOT NULL, + [DockName] [varchar](50) NOT NULL, + [LocationId] [int] NOT NULL, + [WaterService] [bit] NOT NULL, + [ElectricalService] [bit] NOT NULL, + CONSTRAINT [Dock_PK] PRIMARY KEY CLUSTERED +( + [DockID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO + +ALTER TABLE [dbo].[Dock] WITH CHECK ADD CONSTRAINT [FK_Dock_Location] FOREIGN KEY([LocationId]) +REFERENCES [dbo].[Location] ([LocationId]) +GO +ALTER TABLE [dbo].[Dock] CHECK CONSTRAINT [FK_Dock_Location] + + +/******************************** CREATE SLIP TABLE ****************************************/ + +CREATE TABLE [dbo].[Slip]( + [SlipID] [int] IDENTITY(1000,1) NOT NULL, + [SlipWidth] [int] NOT NULL, + [SlipLength] [int] NOT NULL, + [DockID] [int] NOT NULL, + CONSTRAINT [Slip_PK] PRIMARY KEY CLUSTERED +( + [SlipID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[Slip] WITH CHECK ADD CONSTRAINT [Dock_Slip_FK1] FOREIGN KEY([DockID]) +REFERENCES [dbo].[Dock] ([DockID]) +GO +ALTER TABLE [dbo].[Slip] CHECK CONSTRAINT [Dock_Slip_FK1] + + +/******************************** CREATE LeaseType TABLE **********************************/ + +CREATE TABLE [dbo].[LeaseType]( + [LeaseTypeID] [int] IDENTITY(1,1) NOT NULL, + [LeaseTypeName] [varchar](50) NOT NULL, + [StandardRateAmount] [decimal](18, 2) NOT NULL, + CONSTRAINT [PK_LeaseType] PRIMARY KEY CLUSTERED +( + [LeaseTypeID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO + + +/******************************** CREATE CUSTOMER TABLE ***********************************/ + +CREATE TABLE [dbo].[Customer]( + [CustomerID] [int] IDENTITY(1000,1) NOT NULL, + [FirstName] [varchar](30) NOT NULL, + [LastName] [varchar](30) NOT NULL, + [Phone] [varchar](14) NOT NULL, + [City] [varchar](30) NOT NULL, + CONSTRAINT [Customer_PK] PRIMARY KEY CLUSTERED +( + [CustomerID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO + +/******************************** CREATE BOAT TABLE ***************************************/ + +CREATE TABLE [dbo].[Boat]( + [BoatID] [int] IDENTITY(1000,1) NOT NULL, + [RegistrationNumber] [varchar](20) NOT NULL, + [Manufacturer] [varchar](50) NOT NULL, + [ModelYear] [int] NOT NULL, + [Length] [int] NOT NULL, + [CustomerID] [int] NOT NULL, + CONSTRAINT [Boat_PK] PRIMARY KEY CLUSTERED +( + [BoatID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +SET ANSI_PADDING OFF +GO +ALTER TABLE [dbo].[Boat] WITH CHECK ADD CONSTRAINT [Customer_Boat_FK1] FOREIGN KEY([CustomerID]) +REFERENCES [dbo].[Customer] ([CustomerID]) +GO +ALTER TABLE [dbo].[Boat] CHECK CONSTRAINT [Customer_Boat_FK1] + + +/******************************** CREATE AUTHORIZE TABLE **********************************/ + +CREATE TABLE [dbo].[Authorize]( + [AuthID] [int] IDENTITY(1,1) NOT NULL, + [UserName] [varchar](50) NOT NULL, + [Password] [varchar](14) NOT NULL, + [CustomerID] [int] NOT NULL, + CONSTRAINT [PK_Authorize] PRIMARY KEY CLUSTERED +( + [AuthID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +SET ANSI_PADDING OFF +GO +ALTER TABLE [dbo].[Authorize] WITH CHECK ADD CONSTRAINT [FK_Authorize_Customer] FOREIGN KEY([CustomerID]) +REFERENCES [dbo].[Customer] ([CustomerID]) +GO +ALTER TABLE [dbo].[Authorize] CHECK CONSTRAINT [FK_Authorize_Customer] + + +/******************************** CREATE LEASE TABLE *************************************/ + +CREATE TABLE [dbo].[Lease]( + [LeaseID] [int] IDENTITY(1000,1) NOT NULL, + [StartDate] [datetime] NOT NULL, + [EndDate] [datetime] NOT NULL, + [SlipID] [int] NOT NULL, + [CustomerID] [int] NOT NULL, + [LeaseTypeID] [int] NOT NULL, + CONSTRAINT [PK_Lease] PRIMARY KEY CLUSTERED +( + [LeaseID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[Lease] WITH CHECK ADD CONSTRAINT [FK_Lease_Customer] FOREIGN KEY([CustomerID]) +REFERENCES [dbo].[Customer] ([CustomerID]) +GO +ALTER TABLE [dbo].[Lease] CHECK CONSTRAINT [FK_Lease_Customer] +GO +ALTER TABLE [dbo].[Lease] WITH CHECK ADD CONSTRAINT [FK_Lease_LeaseType] FOREIGN KEY([LeaseTypeID]) +REFERENCES [dbo].[LeaseType] ([LeaseTypeID]) +GO +ALTER TABLE [dbo].[Lease] CHECK CONSTRAINT [FK_Lease_LeaseType] +GO +ALTER TABLE [dbo].[Lease] WITH CHECK ADD CONSTRAINT [FK_Lease_Slip] FOREIGN KEY([SlipID]) +REFERENCES [dbo].[Slip] ([SlipID]) +GO +ALTER TABLE [dbo].[Lease] CHECK CONSTRAINT [FK_Lease_Slip] +GO \ No newline at end of file diff --git a/slips/build/sql/original.sql.template b/slips/build/sql/original.sql.template new file mode 100644 index 0000000..3a58e01 Binary files /dev/null and b/slips/build/sql/original.sql.template differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.AddIn.dll b/slips/build/tools/mbunit/bin/MbUnit.AddIn.dll new file mode 100644 index 0000000..35464b9 Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.AddIn.dll differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.Cons.exe b/slips/build/tools/mbunit/bin/MbUnit.Cons.exe new file mode 100644 index 0000000..ff5913a Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.Cons.exe differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.Cons.exe.config b/slips/build/tools/mbunit/bin/MbUnit.Cons.exe.config new file mode 100644 index 0000000..7fd5edb --- /dev/null +++ b/slips/build/tools/mbunit/bin/MbUnit.Cons.exe.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/slips/build/tools/mbunit/bin/MbUnit.Framework.2.0.dll b/slips/build/tools/mbunit/bin/MbUnit.Framework.2.0.dll new file mode 100644 index 0000000..ec1e6d7 Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.Framework.2.0.dll differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.Framework.dll b/slips/build/tools/mbunit/bin/MbUnit.Framework.dll new file mode 100644 index 0000000..18108b9 Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.Framework.dll differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.GUI.exe b/slips/build/tools/mbunit/bin/MbUnit.GUI.exe new file mode 100644 index 0000000..52b27d0 Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.GUI.exe differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.GUI.exe.config b/slips/build/tools/mbunit/bin/MbUnit.GUI.exe.config new file mode 100644 index 0000000..46bf22b --- /dev/null +++ b/slips/build/tools/mbunit/bin/MbUnit.GUI.exe.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/MbUnit.MSBuild.Tasks.dll b/slips/build/tools/mbunit/bin/MbUnit.MSBuild.Tasks.dll new file mode 100644 index 0000000..2de3b3f Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.MSBuild.Tasks.dll differ diff --git a/slips/build/tools/mbunit/bin/MbUnit.Tasks.dll b/slips/build/tools/mbunit/bin/MbUnit.Tasks.dll new file mode 100644 index 0000000..47fab28 Binary files /dev/null and b/slips/build/tools/mbunit/bin/MbUnit.Tasks.dll differ diff --git a/slips/build/tools/mbunit/bin/NAnt.Core.dll b/slips/build/tools/mbunit/bin/NAnt.Core.dll new file mode 100644 index 0000000..77489e3 Binary files /dev/null and b/slips/build/tools/mbunit/bin/NAnt.Core.dll differ diff --git a/slips/build/tools/mbunit/bin/NGraphviz.Helpers.dll b/slips/build/tools/mbunit/bin/NGraphviz.Helpers.dll new file mode 100644 index 0000000..a84595f Binary files /dev/null and b/slips/build/tools/mbunit/bin/NGraphviz.Helpers.dll differ diff --git a/slips/build/tools/mbunit/bin/NGraphviz.Layout.dll b/slips/build/tools/mbunit/bin/NGraphviz.Layout.dll new file mode 100644 index 0000000..291597c Binary files /dev/null and b/slips/build/tools/mbunit/bin/NGraphviz.Layout.dll differ diff --git a/slips/build/tools/mbunit/bin/NGraphviz.dll b/slips/build/tools/mbunit/bin/NGraphviz.dll new file mode 100644 index 0000000..53b9fce Binary files /dev/null and b/slips/build/tools/mbunit/bin/NGraphviz.dll differ diff --git a/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.Graphviz.dll b/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.Graphviz.dll new file mode 100644 index 0000000..2addea0 Binary files /dev/null and b/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.Graphviz.dll differ diff --git a/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.dll b/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.dll new file mode 100644 index 0000000..b70672e Binary files /dev/null and b/slips/build/tools/mbunit/bin/QuickGraph.Algorithms.dll differ diff --git a/slips/build/tools/mbunit/bin/QuickGraph.dll b/slips/build/tools/mbunit/bin/QuickGraph.dll new file mode 100644 index 0000000..5f7dbbf Binary files /dev/null and b/slips/build/tools/mbunit/bin/QuickGraph.dll differ diff --git a/slips/build/tools/mbunit/bin/Refly.dll b/slips/build/tools/mbunit/bin/Refly.dll new file mode 100644 index 0000000..a89da96 Binary files /dev/null and b/slips/build/tools/mbunit/bin/Refly.dll differ diff --git a/slips/build/tools/mbunit/bin/TestDriven.Framework.dll b/slips/build/tools/mbunit/bin/TestDriven.Framework.dll new file mode 100644 index 0000000..1498507 Binary files /dev/null and b/slips/build/tools/mbunit/bin/TestDriven.Framework.dll differ diff --git a/slips/build/tools/mbunit/bin/TestFu.dll b/slips/build/tools/mbunit/bin/TestFu.dll new file mode 100644 index 0000000..571f2b5 Binary files /dev/null and b/slips/build/tools/mbunit/bin/TestFu.dll differ diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/autorunner.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/autorunner.snippet new file mode 100644 index 0000000..4cbfc99 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/autorunner.snippet @@ -0,0 +1,48 @@ + + + +
+ AutoRunner + MbUnit + Expansion snippet for a AutorRunner main. + autorunner + + Expansion + +
+ + + + name + Main class name + Program + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/combinatorialtest.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/combinatorialtest.snippet new file mode 100644 index 0000000..68abce0 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/combinatorialtest.snippet @@ -0,0 +1,56 @@ + + + +
+ CombinatorialTest + MbUnit + Inserts a combinatorial test with 2 parameters and 2 factories + http://www.mertner.com/confluence/display/MbUnit/CombinatorialTestAttribute + combinatorial +
+ + + + testName + Test + + + type1 + + + type2 + type2 + + + arg1Name + arg1Name + + + arg2Name + arg2Name + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/datafixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/datafixture.snippet new file mode 100644 index 0000000..2d29eb9 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/datafixture.snippet @@ -0,0 +1,63 @@ + + + +
+ DataFixture + MbUnit + Expansion snippet for DataFixture + http://www.mertner.com/confluence/display/MbUnit/DataFixture + datafixture + + Expansion + +
+ + + + namespace + Test namespace + + + name + Fixture name + My + + + resource + Resource name + Put the xml resource name here + + + resourceXPath + Data XPath + Put the data XPath here + + + testXPath + Resource XPath + Put the test case XPath here + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/model.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/model.snippet new file mode 100644 index 0000000..8ad72c3 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/model.snippet @@ -0,0 +1,101 @@ + + + +
+ Model + MbUnit + Expansion snippet for a Model + model + + Expansion + +
+ + + + namespace + Model namespace + + + type + Modelled type + Put the modelled type here + + + basetype + Modelled Base Type + Object + + + + /// A implementation for the + /// type. + /// + [Model(typeof($type$))] + // [State("Put a state name here")] + // [SubModel("Put a submodel name here")] + public class $type$Model : $basetype$Model + { + #region Constructors + /// + /// Initializes a new instance. + /// + public $type$Model() + :base() + {} + + /// + /// Initializes a new instance + /// to model the type. + /// + /// + /// Target of the model + /// + public $type$Model(Type modelledType) + :base(modelledType) + { + if (!typeof($type$).IsAssignableFrom(modelledType)) + throw new ArgumentException("$type$ is not assignable from "+modelledType.FullName,"modelledType"); + } + #endregion + + #region Transitions + [Transition] + public void SampleTransition($type$ target) + { + throw new NotImplemented(); + } + + /// + /// Gets the active instance for + /// current . + /// + /// + /// Collection of active names + /// + /// + /// Current tested instance + /// + protected override void GetActiveTransitions( + ITransitionNameCollection transitions, + Object target + ) + { + base.GetActiveTransitions(transitions,target); + $type$ current = ($type$)target; + + $end$ + } + #endregion + } +} + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/processtestfixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/processtestfixture.snippet new file mode 100644 index 0000000..c06df1f --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/processtestfixture.snippet @@ -0,0 +1,72 @@ + + + +
+ ProcessTestFixture + MbUnit + http://www.mertner.com/confluence/display/MbUnit/ProcessTestFixture + processfixture +
+ + + + namespace + MbUnitTests + + + testName1 + Test1 + + + testName2 + Test2 + + + testName3 + Test3 + + + testName4 + Test4 + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/rowtest.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/rowtest.snippet new file mode 100644 index 0000000..e16ae38 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/rowtest.snippet @@ -0,0 +1,114 @@ + + + +
+ RowTest + MbUnit + Inserts a row test with 5 rows and 3 parameters. + http://www.mertner.com/confluence/display/MbUnit/RowTestAttribute + rowtest +
+ + + + testName + Test + + + type1 + type1 + + + arg1Name + arg1Name + + + type2 + type2 + + + arg2Name + arg2Name + + + type3 + type3 + + + arg3Name + arg3Name + + + value1 + value1 + + + value2 + value2 + + + value3 + value3 + + + value4 + value4 + + + value5 + value5 + + + value6 + value6 + + + value7 + value7 + + + value8 + value8 + + + value9 + value9 + + + value10 + value10 + + + value11 + value11 + + + value12 + value12 + + + value13 + value13 + + + value14 + value14 + + + value15 + value15 + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/state.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/state.snippet new file mode 100644 index 0000000..5c116d9 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/state.snippet @@ -0,0 +1,30 @@ + + + +
+ IState wrapper + MbUnit + Expansion snippet for a IState wrapper + state + + Expansion + +
+ + + + name + State Name + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/submodel.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/submodel.snippet new file mode 100644 index 0000000..3d336da --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/submodel.snippet @@ -0,0 +1,34 @@ + + + +
+ ISubModel wrapper + MbUnit + Expansion snippet for a ISubModel wrapper + submodel + + Expansion + +
+ + + + model + Model type + + + name + SubModel Name + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/test.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/test.snippet new file mode 100644 index 0000000..1b91911 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/test.snippet @@ -0,0 +1,28 @@ + + + +
+ Test Method + Expansion snippet for a Test method + test + + Expansion + +
+ + + + name + TestName + Test + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testexpectedexception.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testexpectedexception.snippet new file mode 100644 index 0000000..4dbb7b8 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testexpectedexception.snippet @@ -0,0 +1,34 @@ + + + +
+ Test Method with ExpectedException + MbUnit + Expansion snippet for a Test method + http://www.mertner.com/confluence/display/MbUnit/ExpectedExceptionAttribute + testexpectedexception + + Expansion + +
+ + + + name + TestName + + + type + Expected Exception Type + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testfixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testfixture.snippet new file mode 100644 index 0000000..b023d63 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testfixture.snippet @@ -0,0 +1,71 @@ + + + +
+ TestFixture + MbUnit + Expansion snippet for TestFixture + testfixture + + Expansion + +
+ + + + namespace + Test namespace + + + type + Tested type + + + + /// A for the class. + /// + [TestFixture] + [TestsOn(typeof($type$))] + public class $type$Test + { + #region Fields, SetUp and TearDown + private $type$ target = null; + + /// + /// Sets up the fixture + /// + [SetUp] + public void SetUp() + { + this.target = new $type$(); + } + /// + /// Cleans up the fixture + /// + [TearDown] + public void TearDown() + { + IDisposable disposable = this.target as IDisposable; + if (disposable!=null) + disposable.Dispose(); + } + #endregion + + #region Test cases + [Test] + public void Test() + { + $end$ + } + #endregion + } +} + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testsuitefixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testsuitefixture.snippet new file mode 100644 index 0000000..c8de435 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/testsuitefixture.snippet @@ -0,0 +1,52 @@ + + + +
+ TestSuiteFixture + MbUnit + Expansion snippet for TestSuiteFixture + testsuitefixture + + Expansion + +
+ + + + namespace + Test namespace + + + name + Fixture name + My + + + suiteName + Suite name + Suite + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixture.snippet new file mode 100644 index 0000000..490e531 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixture.snippet @@ -0,0 +1,67 @@ + + + +
+ TypeFixture + MbUnit + Expansion snippet for TypeFixture + http://www.mertner.com/confluence/display/MbUnit/TypeFixture + typefixture + + Expansion + +
+ + + + namespace + Test namespace + + + type + Tested type + + + + /// A for the class. + /// + [TypeFixture(typeof($type$))] + //[ProviderFactory(typeof($type$Factory),typeof($type$))] + [TestsOn(typeof($type$))] + public class $type$Test + { + #region SetUp and TearDown + /// + /// Initializes the fixture + /// + [SetUp] + public void SetUp($type$ value) + { + } + /// + /// Cleans up the fixture + /// + [TearDown] + public void TearDown($type$ value) + { + } + #endregion + + #region Test cases + [Test] + public void Test($type$ value) + { + $end$ + } + #endregion + } +} + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixturewithproviderfactory.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixturewithproviderfactory.snippet new file mode 100644 index 0000000..72da00b --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/typefixturewithproviderfactory.snippet @@ -0,0 +1,77 @@ + + + +
+ TypeFixture with Provider Factory + MbUnit + Expansion snippet for TypeFixture + typefixturefac + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + type + Tested type + + + + ''' A TypeFixture for the $type$ class. + ''' + _ + Public Class $type$Test + + #Region "SetUp and TearDown" + ''' + ''' Initializes the fixture + ''' + _ + Public Sub SetUp(ByVal value As $type$) + + End Sub + ''' + ''' Cleans up the fixture + ''' + _ + Public Sub TearDown(ByVal value As $type$) + + End Sub + #End Region + + #Region "Test cases" + _ + Public Sub Test(ByVal value As $type$) + + End Sub + #End Region + + End Class + + Public Class $type$Factory + _ + Public ReadOnly Property Factory As $type$ + Get + Return New $type$ + End Get + End Property + End Class + +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/usingmbunit.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/usingmbunit.snippet new file mode 100644 index 0000000..c1d9113 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitCSharpSnippets/usingmbunit.snippet @@ -0,0 +1,19 @@ + + + +
+ Using MbUnit Includes + MbUnit + Expansion snippet for the MbUnit using statements + usingMbUnit + + Expansion + +
+ + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/autorunner.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/autorunner.snippet new file mode 100644 index 0000000..3c9e51c --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/autorunner.snippet @@ -0,0 +1,45 @@ + + + +
+ AutoRunner + MbUnit + Expansion snippet for a AutorRunner main. + autorunner + + Expansion + +
+ + + + name + Main class name + Program + + + namespace + MbUnitTests + + + attribute. + + ' auto.Domain.Filter = FixtureFilters.Current + auto.Run() + auto.ReportToHtml() + End Using + End Sub + End Class +End Namespace]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/combinatorialtest.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/combinatorialtest.snippet new file mode 100644 index 0000000..bc46949 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/combinatorialtest.snippet @@ -0,0 +1,54 @@ + + + +
+ CombinatorialTest + MbUnit + Inserts a combinatorial test with 2 parameters and 2 factories + http://www.mertner.com/confluence/display/MbUnit/CombinatorialTestAttribute + combinatorial +
+ + + + testName + Test + + + type1 + + + type2 + type2 + + + arg1Name + arg1Name + + + arg2Name + arg2Name + + + _ + Public Sub $testName$( _ + _ + public IEnumerable $type1$Factory() + { + Dim values As $type1$() = New $type1$ { }; + Return values + } + + _ + Public Function $type2$Factory() As IEnumerable + Dim values As $type2$() = New $type2$ { }; + Return values + End Function]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/datafixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/datafixture.snippet new file mode 100644 index 0000000..5f8f402 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/datafixture.snippet @@ -0,0 +1,61 @@ + + + +
+ DataFixture + MbUnit + Expansion snippet for DataFixture + http://www.mertner.com/confluence/display/MbUnit/DataFixture + datafixture + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + name + Fixture name + My + + + resource + Resource name + Put the xml resource name here + + + resourceXPath + Data XPath + Put the data XPath here + + + testXPath + Resource XPath + Put the test case XPath here + + + _ + Public Class $name$Test + #Region "Test cases" + _ + Public Sub ForEachTest(ByVal node As XmlNode) + + End Sub + #End Region + End Class +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/model.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/model.snippet new file mode 100644 index 0000000..354083c --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/model.snippet @@ -0,0 +1,95 @@ + + + +
+ Model + Expansion snippet for a Model + model + + Expansion + +
+ + + + namespace + Model namespace + MbUnitTests + + + type + Modelled type + Put the modelled type here + + + basetype + Modelled Base Type + Object + + + + ''' A IModel implementation for the $type$ type. + ''' + ' + ' + _ + Public Class $type$Model + Inherits $basetype$Model + + #Region "Constructors" + ''' + ''' Initializes a new $type$Model instance. + ''' + Public Sub New() + + End Sub + + ''' + ''' Initializes a new "$name$Model" instance to model the modelledType type. + ''' + ''' + ''' Target Type of the model + ''' + Public Sub New(ByVal modelledType As Type) + MyBase.New(modelledType) + If Not GetType($type$).IsAssignableFrom(modelledType) + Throw New ArgumentException("$type$ is not assignable from "+modelledType.FullName,"modelledType") + End If + End Sub + #End Region + + #Region "Transitions" + _ + Public Sub SampleTransition(ByVal target As $type$) + Throw New NotImplementedException() + End Sub + + ''' + ''' Gets the active ITransition instance for current target. + ''' + ''' + ''' Collection of active ITransition names + ''' + ''' + ''' Current tested instance + ''' + Protected Overrides Sub GetActiveTransitions( _ + ByVal transitions as ITransitionNameCollection , _ + ByVal target as Object) + + MyBase.GetActiveTransitions(transitions,target) + Dim current As $type$ = DirectCast(target, $type$) + + End Sub + #End Region + End Class +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/processtestfixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/processtestfixture.snippet new file mode 100644 index 0000000..8b53d58 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/processtestfixture.snippet @@ -0,0 +1,75 @@ + + + +
+ ProcessTestFixture + MbUnit + http://www.mertner.com/confluence/display/MbUnit/ProcessTestFixture + processfixture +
+ + + + namespace + MbUnitTests + + + testName1 + Test1 + + + testName2 + Test2 + + + testName3 + Test3 + + + testName4 + Test4 + + + type + The class being tested + type + + + _ + Public Class $type$Test + + _ + Public Sub $testName1$() + + End Sub + + _ + Public Sub $testName2$() + + End Sub + + _ + Public Sub $testName3$() + + End Sub + + _ + Public Sub $testName4$() + + End Sub + + End Class + +End Namespace]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/rowtest.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/rowtest.snippet new file mode 100644 index 0000000..8919619 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/rowtest.snippet @@ -0,0 +1,113 @@ + + + +
+ RowTest + MbUnit + Inserts a row test with 5 rows and 3 parameters. + http://www.mertner.com/confluence/display/MbUnit/RowTestAttribute + rowtest +
+ + + + testName + Test + + + type1 + type1 + + + arg1Name + arg1Name + + + type2 + type2 + + + arg2Name + arg2Name + + + type3 + type3 + + + arg3Name + arg3Name + + + value1 + value1 + + + value2 + value2 + + + value3 + value3 + + + value4 + value4 + + + value5 + value5 + + + value6 + value6 + + + value7 + value7 + + + value8 + value8 + + + value9 + value9 + + + value10 + value10 + + + value11 + value11 + + + value12 + value12 + + + value13 + value13 + + + value14 + value14 + + + value15 + value15 + + + _ + Public Sub $testName$(ByVal $arg1Name$ As $type1$, ByVal $arg2Name$ As $type2$, ByVal $arg3Name$ As $type3$) + + End Sub]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/state.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/state.snippet new file mode 100644 index 0000000..c60429a --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/state.snippet @@ -0,0 +1,27 @@ + + + +
+ IState wrapper + MbUnit + Expansion snippet for a IState wrapper + state + + Expansion + +
+ + + + name + State Name + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/submodel.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/submodel.snippet new file mode 100644 index 0000000..8f4f645 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/submodel.snippet @@ -0,0 +1,32 @@ + + + +
+ ISubModel wrapper + MbUnit + Expansion snippet for a ISubModel wrapper + submodel + + Expansion + +
+ + + + model + Model type + + + name + SubModel Name + + + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/test.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/test.snippet new file mode 100644 index 0000000..625c231 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/test.snippet @@ -0,0 +1,28 @@ + + + +
+ Test Method + MbUnit + Expansion snippet for a Test method + test + + Expansion + +
+ + + + name + TestName + Test + + + _ + Public Sub $name$() + + End Sub + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testexpectedexception.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testexpectedexception.snippet new file mode 100644 index 0000000..caac89d --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testexpectedexception.snippet @@ -0,0 +1,32 @@ + + + +
+ Test Method with ExpectedException + MbUnit + Expansion snippet for a Test method with and expected exception + testexpectedexception + + Expansion + +
+ + + + name + TestName + Test + + + type + Expected Exception Type + + + _ + Public Sub $name$() + + End Sub +]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testfixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testfixture.snippet new file mode 100644 index 0000000..9febc88 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testfixture.snippet @@ -0,0 +1,68 @@ + + + +
+ TestFixture + MbUnit + Expansion snippet for TestFixture + testfixture + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + type + Tested type + + + + ''' A TestFixture for the $type$ class. + ''' + _ + Public Class $type$Test + #Region "Fields, SetUp and TearDown" + Private target As $type$ = Nothing + + ''' + ''' Sets up the fixture + ''' + _ + Public Sub SetUp() + Mew.target = New $type$() + End Sub + ''' + ''' Cleans up the fixture + '' + _ + public void TearDown() + Dim disposable As IDisposable = TryCast(this.target, IDisposable) + If disposable IsNot Nothing Then + disposable.Dispose() + End If + End Sub + #End Region + + #Region "Test cases" + _ + Public Sub Test() + + End Sub + #End Region + End Class +End Namespace]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testsuitefixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testsuitefixture.snippet new file mode 100644 index 0000000..c47decb --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/testsuitefixture.snippet @@ -0,0 +1,48 @@ + + + +
+ TestSuiteFixture + MbUnit + Expansion snippet for TestSuiteFixture + testsuitefixture + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + name + Fixture name + My + + + suiteName + Suite name + Suite + + + _ + Public Class $name$Test + _ + Public Function $suiteName$() As TestSuite + Dim suite As TestSuite = New TestSuite("$suiteName$") + + Return suite + End Function + End Class +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixture.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixture.snippet new file mode 100644 index 0000000..60d4f66 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixture.snippet @@ -0,0 +1,74 @@ + + + +
+ TypeFixture + MbUnit + Expansion snippet for TypeFixture + http://www.mertner.com/confluence/display/MbUnit/TypeFixture + typefixture + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + type + Tested type + + + instanceName + instanceName + + + + ''' A TypeFixture for the $type$ class. + ''' + _ + Public Class $type$Test + #Region "SetUp and TearDown" + ''' + ''' Initializes the fixture + ''' + _ + Public Sub SetUp(ByVal value As $type$) + End Sub + ''' + ''' Cleans up the fixture + ''' + _ + Public Sub TearDown(ByVal value As $type$) + End Sub + #End Region + + #Region "Test cases" + _ + Public Sub Test(ByVal value As $type$) + End Sub + #End Region + + #Region "Providers" + _ + Public Function Provider$type$() As $type$ + Dim $instanceName$ As $type$ = New $type$() + Return $instanceName$ + End Function + #End Region + End Class +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixturewithproviderfactory.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixturewithproviderfactory.snippet new file mode 100644 index 0000000..72da00b --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/typefixturewithproviderfactory.snippet @@ -0,0 +1,77 @@ + + + +
+ TypeFixture with Provider Factory + MbUnit + Expansion snippet for TypeFixture + typefixturefac + + Expansion + +
+ + + + namespace + Test namespace + MbUnitTests + + + type + Tested type + + + + ''' A TypeFixture for the $type$ class. + ''' + _ + Public Class $type$Test + + #Region "SetUp and TearDown" + ''' + ''' Initializes the fixture + ''' + _ + Public Sub SetUp(ByVal value As $type$) + + End Sub + ''' + ''' Cleans up the fixture + ''' + _ + Public Sub TearDown(ByVal value As $type$) + + End Sub + #End Region + + #Region "Test cases" + _ + Public Sub Test(ByVal value As $type$) + + End Sub + #End Region + + End Class + + Public Class $type$Factory + _ + Public ReadOnly Property Factory As $type$ + Get + Return New $type$ + End Get + End Property + End Class + +End Namespace + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/usingmbunit.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/usingmbunit.snippet new file mode 100644 index 0000000..413759c --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitVBSnippets/usingmbunit.snippet @@ -0,0 +1,19 @@ + + + +
+ Using MbUnit Includes + MbUnit + Expansion snippet for the MbUnit using statements + usingMbUnit + + Expansion + +
+ + + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/msbuild.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/msbuild.snippet new file mode 100644 index 0000000..fb788fd --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/msbuild.snippet @@ -0,0 +1,40 @@ + + + +
+ MSBuild task + MbUnit + Expansion snippet for a MSBuild task + msbuild + + Expansion + +
+ + + + name + Fixture name + My + + + + + + + + + + + + + + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/nant.snippet b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/nant.snippet new file mode 100644 index 0000000..4e58569 --- /dev/null +++ b/slips/build/tools/mbunit/bin/VSSnippets/MbUnitXMLSnippets/nant.snippet @@ -0,0 +1,34 @@ + + + +
+ NAnt task + MbUnit + Expansion snippet for a NAnt task + nant + + Expansion + +
+ + + + name + Fixture name + My + + + + + + + $end$ + + + ]]> + +
+
\ No newline at end of file diff --git a/slips/build/tools/mbunit/bin/XsdTidy.exe b/slips/build/tools/mbunit/bin/XsdTidy.exe new file mode 100644 index 0000000..6639a48 Binary files /dev/null and b/slips/build/tools/mbunit/bin/XsdTidy.exe differ diff --git a/slips/build/tools/mbunit/bin/log4net.dll b/slips/build/tools/mbunit/bin/log4net.dll new file mode 100644 index 0000000..46ecf22 Binary files /dev/null and b/slips/build/tools/mbunit/bin/log4net.dll differ diff --git a/slips/build/tools/mbunit/bin/uninst.exe b/slips/build/tools/mbunit/bin/uninst.exe new file mode 100644 index 0000000..42a393f Binary files /dev/null and b/slips/build/tools/mbunit/bin/uninst.exe differ diff --git a/slips/build/tools/nant/bin/CollectionGen.dll b/slips/build/tools/nant/bin/CollectionGen.dll new file mode 100644 index 0000000..7dd6c58 Binary files /dev/null and b/slips/build/tools/nant/bin/CollectionGen.dll differ diff --git a/slips/build/tools/nant/bin/Interop.MsmMergeTypeLib.dll b/slips/build/tools/nant/bin/Interop.MsmMergeTypeLib.dll new file mode 100644 index 0000000..bd051e9 Binary files /dev/null and b/slips/build/tools/nant/bin/Interop.MsmMergeTypeLib.dll differ diff --git a/slips/build/tools/nant/bin/Interop.StarTeam.dll b/slips/build/tools/nant/bin/Interop.StarTeam.dll new file mode 100644 index 0000000..6f56767 Binary files /dev/null and b/slips/build/tools/nant/bin/Interop.StarTeam.dll differ diff --git a/slips/build/tools/nant/bin/Interop.WindowsInstaller.dll b/slips/build/tools/nant/bin/Interop.WindowsInstaller.dll new file mode 100644 index 0000000..d669720 Binary files /dev/null and b/slips/build/tools/nant/bin/Interop.WindowsInstaller.dll differ diff --git a/slips/build/tools/nant/bin/MSITaskErrors.mst b/slips/build/tools/nant/bin/MSITaskErrors.mst new file mode 100644 index 0000000..bea4056 Binary files /dev/null and b/slips/build/tools/nant/bin/MSITaskErrors.mst differ diff --git a/slips/build/tools/nant/bin/MSITaskTemplate.msi b/slips/build/tools/nant/bin/MSITaskTemplate.msi new file mode 100644 index 0000000..99780dd Binary files /dev/null and b/slips/build/tools/nant/bin/MSITaskTemplate.msi differ diff --git a/slips/build/tools/nant/bin/MSMTaskErrors.mst b/slips/build/tools/nant/bin/MSMTaskErrors.mst new file mode 100644 index 0000000..bea4056 Binary files /dev/null and b/slips/build/tools/nant/bin/MSMTaskErrors.mst differ diff --git a/slips/build/tools/nant/bin/MSMTaskTemplate.msm b/slips/build/tools/nant/bin/MSMTaskTemplate.msm new file mode 100644 index 0000000..d537ded Binary files /dev/null and b/slips/build/tools/nant/bin/MSMTaskTemplate.msm differ diff --git a/slips/build/tools/nant/bin/NAnt.CompressionTasks.dll b/slips/build/tools/nant/bin/NAnt.CompressionTasks.dll new file mode 100644 index 0000000..30f8af8 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.CompressionTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.CompressionTasks.xml b/slips/build/tools/nant/bin/NAnt.CompressionTasks.xml new file mode 100644 index 0000000..e926883 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.CompressionTasks.xml @@ -0,0 +1,615 @@ + + + + NAnt.CompressionTasks + + + + + Expands a file packed using GZip compression. + + + Expands "test.tar.gz" to "test2.tar". + + + ]]> + + + + + + Extracts the file from the gzip archive. + + + + + The file to expand. + + + + + The destination file. + + + + + Creates a tar file from the specified filesets. + + + Uses #ziplib (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + Tar all files in ${build.dir} and ${doc.dir} into a file + called "backup.tar.gz", and apply gzip compression to it. + + + + + + + + + + + ]]> + + + + + + Creates the tar file. + + + + + The tar file to create. + + + + + Include empty directories in the generated tar file. The default is + . + + + + + The set of files to be included in the archive. + + + + + The compression method. The default is . + + + + + Specifies the compression methods supported by . + + + + + No compression. + + + + + GZIP compression. + + + + + BZIP2 compression. + + + + + Extracts files from a zip file. + + + + Uses #ziplib + (SharpZipLib), an open source Zip/GZip library written entirely in C#. + + + + Extracts all the file from the zip, preserving the directory structure. + + + ]]> + + + + + + Extracts the files from the zip file. + + + + + Extracts a file entry from the specified stream. + + The containing the compressed entry. + The name of the entry including directory information. + The date of the entry. + The uncompressed size of the entry. + + The destination directory for the entry could not be created. + -or- + The entry could not be extracted. + + + We cannot rely on the fact that the directory entry of a given file + is created before the file is extracted, so we should create the + directory if it doesn't yet exist. + + + + + Extracts a directory entry from the specified stream. + + The containing the directory entry. + The name of the directory entry. + The date of the entry. + + The destination directory for the entry could not be created. + + + + + The archive file to expand. + + + + + The directory where the expanded files should be stored. The + default is the project base directory. + + + + + Overwrite files, even if they are newer than the corresponding + entries in the archive. The default is . + + + + + The character encoding that has been used for filenames inside the + zip file. The default is the system's OEM code page. + + + + + Creates a zip file from the specified filesets. + + + + Uses #ziplib + (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + + Zip all files in ${build.dir} and ${doc.dir} into a file + called "backup.zip". + + + + + + + + + + + ]]> + + + + + + Creates the zip file. + + + + + The zip file to create. + + + + + The comment for the file. + + + + + Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS. + + + + + Desired level of compression. Possible values are 0 (STORE only) + to 9 (highest). The default is 6. + + + + + Include empty directories in the generated zip file. The default is + . + + + + + The set of files to be included in the archive. + + + + + Specifies the behaviour when a duplicate file is found. The default + is . + + + + + The character encoding to use for filenames and comment inside the + zip file. The default is the system's OEM code page. + + + + + Specifies how entries with the same name should be processed. + + + + + Overwrite existing entry with same name. + + + + + Preserve existing entry with the same name. + + + + + Report failure when two entries have the same name. + + + + + A is a with extra + attributes useful in the context of the . + + + + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to plain files. The + default is 644. + + + + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to directories. The + default is 755. + + + + + The username for the tar entry. + + + + + The user identifier (UID) for the tar entry. + + + + + The groupname for the tar entry. + + + + + The group identifier (GID) for the tar entry. + + + + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Get the total number of files that are represented by the + filesets in this collection. + + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + A is a with extra + attributes useful in the context of the . + + + + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Get the total number of files that are represented by the + filesets in this collection. + + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.dll b/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.dll new file mode 100644 index 0000000..9a170e9 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.xml b/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.xml new file mode 100644 index 0000000..5df74c5 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.Contrib.Tasks.xml @@ -0,0 +1,18933 @@ + + + + NAnt.Contrib.Tasks + + + + + Provides methods for interrogating Filesets. + + + + + Determines the number of files within a . + + The id of the FileSet to scan. + The number of files included in the FileSet + is not a valid refid to a defined fileset. + + + Define a fileset and check the number of files in it. + + + + + + + ]]> + + + + + + Determines whether contains any files. + + The id of the fileset to check. + if the FileSet contains one or more files, otherwise . + is not a valid refid to a defined fileset. + + + Perform conditional processing on a fileset if it contains files. + + + + + + + + + ]]> + + + + + + Returns a delimited string of all the filenames within a with each filename + separated by the specified delimiter string. + + The id of the fileset to check. + String to separate filenames with. + A delimited string of the filenames within the specified FileSet. + is not a valid refid to a defined fileset. + + + Displays a space-pipe-space separated string fo the files within a defined FileSet. + + + + + + + ]]> + + + + + + Allow information on a Windows service to be retrieved. + + + + + Returns a value indicating whether the specified service is + installed on a given machine. + + The short name that identifies the service to the system. + The computer on which the service resides. + + if the service is installed; otherwise, + . + + + For the machineName parameter, you can use "." or a zero-length + to represent the local computer. + + + + The following example starts the "World Wide Web Publishing" + service if it's installed on the local computer. + + + + + + ]]> + + + + + + Returns a value indicating whether the specified service is running. + + The short name that identifies the service to the system. + The computer on which the service resides. + + if the service is running; otherwise, + . + + + For the machineName parameter, you can use "." or a zero-length + to represent the local computer. + + + + + Returns a value indicating whether the specified service is stopped. + + The short name that identifies the service to the system. + The computer on which the service resides. + + if the service is stopped; otherwise, + . + + + For the machineName parameter, you can use "." or a zero-length + to represent the local computer. + + + + + Returns a value indicating whether the specified service is paused. + + The short name that identifies the service to the system. + The computer on which the service resides. + + if the service is paused; otherwise, + . + + + For the machineName parameter, you can use "." or a zero-length + to represent the local computer. + + + + + Gets the status of the specified service. + + The short name that identifies the service to the system. + The computer on which the service resides. + + One of the values that + indicates whether the service is running, stopped, or paused, or + whether a start, stop, pause, or continue command is pending. + + + + For the machineName parameter, you can use "." or a zero-length + to represent the local computer. + + + The value returned by can be compared + to either a corresponding enum field name or the underlying + integral value. + + + + + Displays a warning if the Alerter service is stopping + on SV-ARD-EAI1. + + + + The Alerter service is stopping. + + ]]> + + + + + The "deploy-web-application" target is only executed if + IIS is running on the local computer. + + + + + + ... + + + + ... + + ]]> + + + + + + Gets the friendly name of the specified service. + + The short name that identifies the service to the system. + The computer on which the service resides. + + The friendly name of the service, which can be used to identify the service. + + + + + Gets the name that identifies the specified service + + The short name that identifies the service to the system. + The computer on which the service resides. + + The name that identifies the service. + + + + + The name of the management SQL database. + + + + + The name of the SQL Server where the management database is + located. + + + + + Deploys an assembly to a given BizTalk configuration database. + + + Deployment will fail if the assembly is already deployed. + + + + + Deploys the assembly. + + + The assembly does not exist. + -or- + The assembly binding information file does not exist. + -or- + The assembly could not be deployed. + + + + + The path to the BizTalk assembly to deploy. + + + + + Determines whether to install the assembly in the Global Assembly + Cache. The default is . + + + + + The path to an assembly binding information file to import bindings + from. + + + + + The path to the HTML log file to generate. + + + + + Exports bindings for a BizTalk assembly to an assembly binding + information file. + + + + + Exports the bindings. + + + The assembly does not exist. + -or- + The bindings could not be exported. + + + + + The path to the BizTalk assembly for which to export bindings. + + + + + The path to an assembly binding information file in which the + bindings will be saved. + + + + + The path to the HTML log file to generate. + + + + + Allows BizTalk (in-process) host instances to be controlled. + + + + Starts the "BizTalkServerApplication" host instance + on server "SV-ARD-EAI". + + + + ]]> + + + + + Stops all "BizTalkServerApplication" host instances. + + + + ]]> + + + + + + The name of the host on which the perform the action. + + + + + The name of the BizTalk server on which to perform the action. + If not specified, the action will be performed on all instances. + + + + + The action that should be performed on the host. + + + + + Defines the actions that can be performed on a host instance. + + + + + Starts the host instance. + + + + + Stops the host instance. + + + + + Stops and restarts the host instance. + + + + + Imports bindings from a given assembly binding information file into + the specified BizTalk configuration database. + + + + + Imports the assembly binding information file. + + + The assembly binding information file does not exist. + -or- + The assembly binding information file could not be imported. + + + + + The path to the assembly binding information file containing the + bindings to import. + + + + + The path to the HTML log file to generate. + + + + + Performs a set of actions on a given orchestration. + + + + + The name of the BizTalk server on which to perform the action. + + + + + The name of the orchestration to perform an action on. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the project. + + + + + Starts the orchestration. + + + If the orchestration is not yet enlisted, then this will be done + first. + + + + + Specifies whether receive locations associated with this + orchestration should be automatically enabled. The default is + . + + + + + Specifies whether service instances of this orchestration that + were manually suspended previously should be automatically + resumed. The default is . + + + + + Specifies whether send ports and send port groups imported by + this orchestration should be automatically started. The default + is . + + + + + Stops the orchestration. + + + If the status of the orchestration is , + or , + then no further processing is done. + + + + + Stops the orchestration. + + The orchestration to stop. + + If the status of orchestration is , + or , + then no further processing is done. + + + + + Specifies whether receive locations associated with this + orchestration should be automatically disabled. The default + is . + + + + + Specifies whether instances of this orchestration should be + automatically suspended. The default is . + + + + + Enlists the orchestration by creating its activation subscription. + + + + + Specifies the BizTalk host on which to enlist the orchestration. + + + + + Unenlists the orchestration by removing its activation subscription. + + + + + Specifies whether instances of this orchestration type should + be automatically terminated. The default is . + + + + + Allows stopping, starting and resetting of BizTalk in-process host + instances on the specified server. + + + + + The name of the BizTalk server on which to perform the action. + + + + + Specifies the action(s) to perform on the BizTalk host instances. The + default is . + + + + + Defines the possible actions that can be performed on the BizTalk + in-process host instances. + + + + + Stops all in-process host instances. + + + + + Starts all in-process host instances. + + + + + Stops and restarts all in-process host instances. + + + + + Allows BizTalk send ports to be controlled. + + + + Starts the "UmeHttpSendPort" port on server + "SV-ARD-EAI". + + + + ]]> + + + + + Unenlists the "UmeHttpSendPort" on server "SV-ARD-EAI". + + + + ]]> + + + + + + The name of the send port on which the perform the action. + + + + + The name of the BizTalk server on which to perform the action. + + + + + The action that should be performed on the send port. + + + + + Defines the actions that can be performed on a BizTalk send port. + + + + + Starts the send port. + + + + + Stops the send port. + + + + + Stops and restarts the send port. + + + + + Enlists the send port. + + + + + Unenlists the send port. + + + + + Removes all bindings for a given assembly from a BizTalk configuration + database. + + + + + Removes bindings for the specified assembly. + + + The assembly does not exist. + -or- + The bindings could not be removed. + + + + + The path to the BizTalk assembly for which to remove all bindings. + + + + + The name of the BizTalk server on which to perform the operation. + + + + + The assembly qualified name of the receive pipeline to set when + unbinding a receive pipeline. + + + + + The assembly qualified name of the SEND pipeline to set when + unbinding a send pipeline. + + + + + Removes a given assembly from a BizTalk configuration database. + + + + + Removes an assembly from a BizTalk configuration database. + + + The assembly does not exist. + -or- + The assembly could not be remove from the BizTalk configuration database. + + + + + The path to the BizTalk assembly to remove. + + + + + Determines whether to remove the assembly from the Global Assembly + Cache. The default is . + + + + + The path to the HTML log file to generate. + + + + + Base class for all the ClearCase tasks. + + + + + Base Constructor. + + + + + Execute the perforce command assembled by subclasses. + + + + + Derived classes should override this to provide command-specific + commandline arguments. + + + + + Overrides the base class. + + + + + Displays a ClearCase config spec. + + + + + The view tag identifying the ClearCase view that will have its + config spec displayed. + + + + + This is an override used by the base class to get command specific args. + + + + + Checks files into a ClearCase VOB. + + + + + + This task uses the cleartool checkin command to check in ClearCase elements. + + + + + Performs a ClearCase checkin on the file c:/views/viewdir/afile. + All warning messages are suppressed, and the element is checked in even if identical to the original. + Comment text from the file acomment.txt is added to ClearCase as a comment. All warning messages are suppressed. The file is checked in even if it is identical to the original. + + + + ]]> + + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + if warning messages should be suppressed. + The default is . + + + + + If , the modification time will be preserved. + Default is . + + + + + to keep a view-private copy of the file with + a .keep extension. Default is . + + + + + If , files may be checked in even if identical + to the original. Default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Checks files out of a ClearCase VOB. + + + + + + This task uses the cleartool checkout command to check out ClearCase elements. + + + + + Performs a ClearCase checkout on the file c:/views/viewdir/afile. + It is checked out as reserved on branch called abranch. + All warning messages are suppressed. + Some comment text is added to ClearCase as a comment. + + + + ]]> + + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + to check the element out as reserved. + Default is . + + + + + Creates a writable file under a different filename. + + + + + If , checks out the file but does not create + an editable file containing its data. Default is . + + + + + Specify a branch to check out the file to. + + + + + If , checkouts of elements with a version + other than main latest will be allowed. Default is . + + + + + if warning messages should be suppressed. + The default is . + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + If , the modification time will be preserved. + Default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Locks ClearCase elements. + + + + + This task uses the cleartool lock command to lock ClearCase elements. + + + + + Performs a ClearCase lock on the object stream:Application_Integration@\MyProject_PVOB. + + + + ]]> + + + + + + If an existing lock can be replaced. + Default is . + + + + + Specifies user(s) who can still modify the object. + Only one of or may be + used. + + + + + If the object will be marked obsolete. + Only one of or may + be used. Default is . + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + Specifies the object pathname to be locked. + + + + + Specifies the object(s) to be locked. + + + + + This is an override used by the base class to get command specific args. + + + + + Creates elements in a ClearCase VOB. + + + + This task uses the cleartool mkelem command to create ClearCase elements. + + + + + Performs a ClearCase mkelem on the file c:/views/viewdir/afile with element type text_file. + It checks in the file after creation and adds Some comment text as a comment. + + + + ]]> + + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + If , warning will be suppressed. + The default is . + + + + + Perform a checkout after element creation. + Default is . + + + + + Checkin element after creation. + Default is . + + + + + If , the modification time will be preserved. + Default is . + + + + + Assign mastership of the main branch to the current site. + Default is . + + + + + Element type to use during element creation. + + + + + Create elements from the view-private parent directories. + Default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Applies a ClearCase label. + + + + + This task uses the cleartool mklabel command to apply a ClearCase label to specified elements. + + + + + Performs a ClearCase mklabel on the file c:/views/viewdir/afile under + the main branch for version 2 (\main\2). All matching + elements will be applied with label VERSION_1. + Some comment text is added as a comment. Subdirectories will be recursed. + + + + ]]> + + + + + + Name of the label type + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + If , allow the replacement of a + label of the same type on the same branch. + The default is . + + + + + If , process each subdirectory recursively under the viewpath. + Default is . + + + + + Identify a specific version to attach the label to. + + + + + Path to the ClearCase view file or directory that the command will operate on. + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + For any VOB symbolic links encountered, labels the corresponding target. + + + + + This is an override used by the base class to get command specific args. + + + + + Creates a label object in a ClearCase VOB. + + + + + This task uses the cleartool mklabeltype command to create a ClearCase label object. + + + + + Performs a ClearCase mklbtype to create a label type named VERSION_1. + It is created as ordinary so it is available only to the current VOB. + The text Development version 1 is added as a comment. + + + + ]]> + + + + + + Name of the label type to create. + + + + + Name of the VOB. Must be a valid path to somewhere on a VOB. + + + + + If , allow an existing label definition to be replaced. + The default is . + + + + + Creates a label type that is global to the VOB or to VOB's that use this VOB. + Either global or ordinary can be specified, not both. + The default is . + + + + + Creates a label type that can be used only in the current VOB. + Either global or ordinary can be specified, not both. + Although by default, if global is also or not specified ordinary is the default behaviour. + + + + + If the label type is allowed to be used once per branch in a given element's version tree. + The default is . + + + + + Sets the way mastership is checked by ClearCase. See ClearCase documentation for details. + The default is . + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + This is an override used by the base class to get command specific args. + + + + + Removes elements from a ClearCase VOB. + + + + This task uses the cleartool rmtype command to remove a ClearCase object. + + + + + Performs a ClearCase rmtype to remove a + type named VERSION_1. + Comment text from the file acomment.txt is added as a comment. + All instances of the type are removed, including the type object itself. + + + + ]]> + + + + + + The kind of type to remove. + + + + + The name of the object to remove. + + + + + Used with types only. + Forces removal of type even if a + pre-operation trigger would prevent its removal. + The default is . + + + + + Removes all instances of a type and the type object itself. + The default is . + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + This is an override used by the base class to get command specific args. + + + + + Uncheckout ClearCase elements. + + + + + + This task uses the cleartool unco command to remove a ClearCase object. + + + + + Does a ClearCase uncheckout on the file c:/views/viewdir/afile. + A copy of the file called c:/views/viewdir/afile.keep is kept. + + + + ]]> + + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + If , a view-private copy of the file with a + .keep extension will be kept. Default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Unlocks ClearCase elements. + + + + + This task uses the cleartool unlock command to unlock a ClearCase object. + + + + + Performs a ClearCase unlock on the object stream:Application_Integration@\MyProject_PVOB. + + + + ]]> + + + + + + Specify a comment. Only one of or + may be used. + + + + + Specify a file containing a comment. Only one of + or may be used. + + + + + Specifies the object pathname to be unlocked. + + + + + Specifies the object(s) to be unlocked. + + + + + This is an override used by the base class to get command specific args. + + + + + Updates a ClearCase view. + + + + This task uses the cleartool update command to update a ClearCase view. + + + + + Performs a ClearCase update on the snapshot view directory c:/views/viewdir. + A graphical dialog will be displayed. + The output will be logged to log.log and it will overwrite any hijacked files. + The modified time will be set to the current time. + + + + ]]> + + + + + + Path to the ClearCase view file or directory that the command will + operate on. + + + + + Displays a graphical dialog during the update. + The default is . + + + + + Specifies a log file for ClearCase to write to. + + + + + If , hijacked files will be overwritten. + The default is . + + + + + If , hijacked files will be renamed with a .keep extension. + The default is . + + + + + Specifies that modification time should be written as the current time. + Only one of or + can be specified. The default is . + + + + + Specifies that modification time should preserved from the VOB time. + Only one of or + can be specified. The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Searches files for a regular-expression and produces an XML report of + the matches. + + + + Extract all TODO:, UNDONE: or HACK:- + comment-tags from C# source files and write them to a file + out.xml. (A xslt-stylesheet could then transform it to + a nice html-page for your project-homepage, but that is beyond + the scope of this example.) + + + Path, File and LineNumber are automatically + generated elements. + + + + + + + + ]]> + + + The resulting XML file for a comment-tag + 'TODO: [md, 14-02-2004] comment this method' + will look like + + + + + + TODO + comment this method + C:\MyProjects\MyPath + MyFile.cs + 146 + md + 14-02-2004 + + ... + + ]]> + + + + + + Performs the regex-search. + + + + + Writes the collection of matches to the specified + in XML format. + + The matches to write. + to write the matches to. + + + + Writes the specified matches to . + + The collection of matches to write. + + + + Specifies the name of the output file. + + + + + Specifies the regular-expression to search for. + + + + + The set of files in which the expression is searched. + + + + + This purpose of this class is to get the line-numbers within + a string for a specific position of a character + (an index, as returned by the class). + + + + + The string to count in + + + + + The current position within . + + + + + The number of line feeds upto (but exluding) . + + + + + Constructs a line-counter for a . + + for which lines are counted. + + + + Counts the line-numbers until the position + is reached. + + Index into the string given during construction + + The number of lines. + + + + + Counts the number of occurences of in the + range from to in + string . + + to count in. + Character to count. + Start of range. + End of range. + + The number of occurences of in the range from + to in string + . + + + + + Encapsulation of a match of a regular-expression with the + associated named capture-groups. + + + + + containing the mapping from group names + to values. + + + + + Writes this match to an . + + The to write to. + + + + Gets or sets the value for a capture group. + + + + + A strongly-typed collection of instances. + + + + + Adds a to this collection. + + to add. + + + + Adds all instances + to this collection. + + Collection of instances to add. + + + + Gets the th match stored in this collection. + + + + + Encapsulation of a search pattern. + + + + + Initializes a new instance of the class from + a regular-expression. + + The regular-expression. + + + + Concatenates the captures of to a string. + + containing the captures. + + containg the concatenated captures. + + + A named-group can captured multiple times, when the regular + expression has a quantifier, e.g. (// (?'Text'.*) )* will match + multiline comments with group Text having a capture for + every line. + + + + + Extracts the matches of this pattern from . + + The name of the file associated with . + The source string + + A collection of found matches. + + + + + The base abstract class for all MKS Tasks. + + + Provides the core attributes, and functionality for opening an item + in a MKS database. + + + + + Opens the MKS database and sets the reference to the specified + item and version. + + + + + The password to use to login to the MKS database. + + + + + The name of the user needed to access the MKS database. + + + + + The name of the host MKS server to connect to + + + + + The port number on which the host server is accepting requests + + + + + Checkpoints a project in an MKS Source Integrity database. + + + Checkpoint a project in an MKS database. + + ]]> + + + + + The label to apply to the checkpoint. + + + + + The project to checkpoint. + + + + + Apply label to all members. The default is . + + + + + The description of the checkpoint. + + + + + Retrieves an item or project from MKS Source Integrity. + + + Synchronise sandbox with MKS project. + + ]]> + + + + + The path to the local working directory. + + + + + The project to get from MKS. + + + + + Generates an XML file containing the differences between the sandbox and + the project in the MKS database. + + + Get changes to a project in an MKS database. + + ]]> + + + + + The project to retrieve the changes for. + + + + + The file where the output will be stored in XML format. + + + + + Base class for and . + + + + + Determines if the supplied version string is valid. A valid version string should look like: + 1 + 1.1 + 1.1.1 + 1.1.1.1 + + The version string to verify. + + + + + Sets the sequence number of files to match their + storage order in the cabinet file, after some + files have had their filenames changed to go in + their own component. + + The MSI database. + The last file's sequence number. + + + + Cleans the output directory after a build. + + The path to the cabinet file. + The path to temporary files. + + + + Loads records for the Properties table. + + The MSI database. + + + + Loads records for the Directories table. + + The MSI database. + + + + Adds a directory record to the directories table. + + The MSI database. + The MSI database view. + The parent directory. + This directory's Schema object. + The tree depth of this directory. + + + + Retrieves the relative path of a file based on + the component it belongs to and its entry in + the MSI directory table. + + The MSI database. + The Name of the Folder + The Parent of the Folder + The Relative Filesystem Path of the Folder + The Path to the Folder from previous calls. + The MSI database view. + + + + If the specified path is longer than 40 characters, 37 are returned plus ... + + A shortened path + + + + + Retrieves a DOS 8.3 filename for a file. + + The file to shorten. + The new shortened file. + + + + Retrieves a DOS 8.3 filename for a directory. + + The path to shorten. + The new shortened path. + + + + Retrieves a DOS 8.3 filename for a complete directory. + + The path to shorten. + The new shortened path. + + + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. + + + + Converts the Byte array in a public key + token of an assembly to a string MSI expects. + + The array of bytes. + The string containing the array. + + + + Loads TypeLibs for the TypeLib table. + + The MSI database. + + + + Loads environment variables for the Environment table. + + The MSI database. + + + + Loads records for the Registry table. + + The MSI database. + + + + Loads records for the RegLocator table + + The MSI database. + + + + Loads records for the CompLocator table + + The MSI database. + + + + Loads records for the IniLocator table + + The MSI database. + + + + Loads records for the DrLocator table + + The MSI database. + + + + Loads records for the RegLocator table + + The MSI database. + + + + Gets the name of the registry root id by it's name. + + Name of the registry root + + + + + Loads records for the AppSearch table + + The MSI database. + + + + Loads records for the Icon table. + + The MSI database. + + + + Loads records for the Shortcut table. + + The MSI database. + + + + Adds custom table(s) to the msi database + + The MSI database. + + + + Adds table data to the msi database table structure + + The MSI database. + The current table name + Xml node representing the current table + List of column objects for the current table (Containing: column name, id, type). + + + + Loads records for the Binary table. This table stores items + such as bitmaps, animations, and icons. The binary table is + also used to store data for custom actions. + + The MSI database. + + + + Loads records for the Dialog table. + + The MSI database. + + + + Loads records for the Control table. + + The MSI database. + + + + Loads records for the ControlCondtion table. + + The MSI database. + + + + Loads records for the ControlEvent table. + + The MSI database. + + + + Loads records for the CustomAction table + + The MSI database. + + + + Loads records for the ActionText table. Allows users to specify descriptions/templates for actions. + + The MSI database. + + + + Loads records for the _AppMappings table. + + The MSI database. + + + + Loads records for the _UrlToDir table. + "Load the url properties to convert + url properties to a properties object" ?? + + The MSI database. + + + + Loads records for the _VDirToUrl table. + Used for converting a vdir to an url + + The MSI database. + + + + Loads records for the _AppRootCreate table. + Used for making a virtual directory a virtual application + + The MSI database. + + + + Loads records for the _IISProperties table. + + The MSI database. + + + + Enumerates the registry to see if an assembly has been registered + for COM interop, and if so adds these registry keys to the Registry + table, ProgIds to the ProgId table, classes to the Classes table, + and a TypeLib to the TypeLib table. + + The MSI database. + The Assembly filename. + The Assembly to check. + The name of the containing component. + The name of the containing component's assembly GUID. + View containing the Class table. + View containing the ProgId table. + + + + Loads properties for the Summary Information Stream. + + The MSI database. + + + + Creates a .cab file with all source files included. + + The MSI database. + + + + Loads records for the sequence tables. + + The MSI database. + + + + Adds a file record to the Files table. + + The MSI database. + The MSI database view. + The Component's XML Element. + The MSI database view. + The directory of this file's component. + The name of this file's component. + The installation sequence number of this file. + View containing the MsiAssembly table. + View containing the MsiAssemblyName table. + View containing the Components table. + View containing the FeatureComponents table. + View containing the Class table. + View containing the ProgId table. + View containing the SelfReg table. + ModuleComponent table. + + + + Loads records for the Components table. + + The MSI database. + The sequence number of the last file in the .cab + + + + Executes the Task. + + None. + + + + .NET wrapper for a Windows Installer database + + + + + Drops empty tables. + + + + + Drops the empty tables. + + Determines if this is a merge module or not + If it is a merge module, the FeatureComponents table should not be dropped. + + + + Checks to see if the specified table is empty. + + Name of the table to check existance. + True if empy and False if full. + + + + Checks to see if the specified table exists in the database + already. + + Name of the table to check existance. + True if successful. + + + + Helper class used to avoid errors when instantiating + WindowsInstaller.Installer. + + + + + Use to read and manipulate existing records. + + + + + Creates a new reader for the entries in the view + + Database view to read entries from. Must be Execute()'ed already. + + + + Moves to the next record + + False iff no more records + + + + Deletes the current record. Needs no Commit(). + + + + + Set the value of a field in the current record. Remember to Commit() + + Zero-based index of the field to set + New value + + + + Get the string value of a field in the current record. + + Zero-based index of the field to get + + + + Commits changes to the current record. + + + + + A simple class for a single search clause. + TODO: more comparison types, use of the Composite pattern, etc. + + + + + Represents a single table in a Windows Installer archive + + + + + Base class for msi/msm installer tasks + + + + + Abstract that validates inheriting classes against + an XML schema of the same name. + + + + + Initializes the task and verifies parameters. + + Node that contains the XML fragment used to define this task instance. + + + + Occurs when a validation error is raised. + + The object that sent the event. + Validation arguments passed in. + + + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. + + + + Returns the object from the Schema wrapper after + is called. + + The object from the Schema wrapper after is called. + + + + The name of the file that will be generated when the task completes + execution (eg. MyInstall.msi or MyMergeModule.msm). + + + + + A directory relative to the NAnt script in which the msi task resides + from which to retrieve files that will be installed by the msi + database. All files that will be included in your installation need + to be located directly within or in subdirectories of this directory. + + + + + A installer file to use as the starting database in which all files + and entries will be made, and then copied to the filename specified + by the output parameter. Install templates are included with the + install tasks, you only need to supply this value if you want to + override the default template. + + + + + A .mst file to use as the starting database containing strings + displayed to the user when errors occur during installation. + A .mst template is included with the msi task, you only need to + supply this value if you want to override the default error + template and cannot perform something through the features of the + msi task. + + + + + Causes the generated msi database file to contain debug messages for + errors created by inconsistencies in creation of the database. This + makes the file slightly larger and should be avoided when generating + a production release of your software. + + + + + + Sets various properties in the SummaryInformation stream + (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp) + + + All of the sub-elements are optional. + +

Nested Elements:

+

<title>

+
    + Briefly describes the type of installer package. Phrases such as "Installation Database" or + "Transform" or "Patch" may be used for this property. +
    Default value: Value of the ProductName property, if defined. +
+

</title>

+

<subject>

+
    + A short description of the product to be installed. This value is typically set from the installer + property ProductName +
    Default value: Value of the ProductName property, if defined. +
+

</subject>

+

<author>

+
    + The manufacturer of the installation database. This value is typically set from the installer + property Manufacturer. +
    Default value: Value of the Manufacturer property, if defined. +
+

</author>

+

<keywords>

+
    + Used by file browsers to hold keywords that permit the database file to be found in a keyword search. + The set of keywords typically includes "Installer" as well as product-specific keywords, and may be + localized. +
    Default value: Value of the Keywords property, if defined. +
+

</keywords>

+

<comments>

+
    + A general description/purpose of the installer database. +
    Default value: Value of the Comments property, if defined. +
+

</comments>

+

<template>

+
    + + Indicates the platform and language versions that are supported by the database. The Template Summary + Property of a patch package is a semicolon-delimited list of the product codes that can accept the + patch. + + + See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information. + +
+

</template>

+

<revisionnumber>

+
    + Contains the package code (GUID) for the installer package. The package code is a unique identifier + of the installer package. Note: Default behavior - a new GUID is generated every time +
+

</revisionnumber>

+

<creatingapplication>

+
    + The name of the application used to author the database. Note: Default value is NAnt. +
+

</creatingapplication>

+

Examples

+ + Define specific summary information. + + <summaryinformation> + <title>Installation Database</title> + <subject>${install.productname}</subject> + <author>${install.manufacturer}</author> + <keywords>MSI, database, NAnt, Installer</keywords> + <comments>This installer database contains the logic and data required to install NAnt</comments> + <template>;1033</template> + <creatingapplication>NAnt - http://nant.sf.net </creatingapplication> + </summaryinformation> + + +
+
+ + + + Name/value pairs which will be set in the PROPERTY table of the + installer database. + + + The properties element contains within it one to any number of property elements.
+ Public property names cannot contain lowercase letters.
+ Private property names must contain some lowercase letters.
+ Property names prefixed with % represent system and user environment variables. These are + never entered into the Property + table. The permanent settings of environment variables can only be modified using the Environment Table. + More information is available here. +
+

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the property. + True + + + value + string + The value of the property. This value can contain references to other, predefined properties to build a compound property. + True + + +

Examples

+ + Define the required properties. + + <properties> + <property name="ProductName" value="My Product" /> + <property name="ProductVersion" value="1.0.0" /> + <property name="Manufacturer" value="ACME Inc." /> + <property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" /> + <property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" /> + </properties> + + +
+
+ + + + Contains within it one to any number of app, registry, ini, or dirfile elements. + These elements are used to search for an existing filesystem directory, file, or + Windows Registry setting. A property in the installer database is + then set with the value obtained from the search. + +

<app>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp + + + + Attribute + Type + Description + Required + + + componentid + string + The component ID of the component whose key path is to be used for the search. + True + + + type + msi:MSILocatorTypeDirFile + Valid input: file or directory + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</app>

+

<registry>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp + + + + Attribute + Type + Description + Required + + + type + msi:MSILocatorTypeDirFileReg64 + Valid input: registry, file, directory, 64bit + True + + + path + string + Depending on the type specified: + + Path is a directory. + Path is a registry key. + + + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + +
    +

    Nested Elements:

    +

    <value>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + Depending on the type specified: + + Key path is a file name. + Key path is a registry value. + + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

    </value>

    +
+

</registry>

+

<ini>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp + + + + Attribute + Type + Description + Required + + + filename + string + The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.) + + True + + + section + string + Section name within the .ini file. + + True + + + key + string + Key value within the section. + + True + + + field + msi:nonNegativeInt + The field in the .ini line. If Field is Null or 0, then the entire line is read. + This must be a non-negative number. + + False + + + type + msi:MSILocatorTypeDirFileRaw + Valid input: file ,directory, or raw + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</ini>

+

<dirfile>

+ + More information on these attributes can be found at: + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp + and + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp + + + + Attribute + Type + Description + Required + + + parent + string + An identifier to RegLocator, IniLocator, or CompLocator tables. + If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. +
In order to determine what the key is for a table, prefix the property name assigned + to that locator with SIG_ +
+ False +
+ + path + string + the path on the user's system. This is a either a full path or a relative subpath + below the directory specified in the Parent column. + + False + + + depth + msi:nonNegativeInt + The depth below the path that the installer searches for the file or directory. + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + +
+
    +

    Nested Elements:

    +

    <file>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + The name of the file. + True + + + minversion + string + The minimum version of the file, with a language comparison. If this field is + specified, then the file must have a version that is at least equal to MinVersion. + If the file has an equal version to the MinVersion field value but the language + specified in the Languages column differs, the file does not satisfy the signature + filter criteria. + False + + + maxversion + string + The maximum version of the file. If this field is specified, then the file + must have a version that is at most equal to MaxVersion. + False + + + minsize + msi:nonNegativeInt + The minimum size of the file. If this field is specified, then the file + under inspection must have a size that is at least equal to MinSize. This must + be a non-negative number. + False + + + maxsize + msi:nonNegativeInt + The maximum size of the file. If this field is specified, then the file + under inspection must have a size that is at most equal to MaxSize. This must + be a non-negative number. + False + + + mindate + msi:nonNegativeInt + The minimum modification date and time of the file. If this field is + specified, then the file under inspection must have a modification date and time + that is at least equal to MinDate. This must be a non-negative number. + False + + + maxdate + msi:nonNegativeInt + The maximum creation date of the file. If this field is specified, then the + file under inspection must have a creation date that is at most equal to MaxDate. + This must be a non-negative number. + False + + + languages + string + The languages supported by the file. + False + + +

    </file>

    +
+

</dirfile>

+

Examples

+ + Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\InetStp" root="machine" > + <value name="PathWWWRoot" setproperty="IISWWWROOT" /> + </registry> + <registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" > + <value name="MajorVersion" setproperty="IISVERSION" /> + </registry> + </search> + + + + Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\MessengerService" root="machine" > + <value setproperty="MSGSRVNAME" /> + <value name="" setproperty="MSGSRVNAME2" /> + </registry> + </search> + + +
+
+ + + + Contains within it one to any number of launchcondition elements. + Launch conditions are conditions that all must be satisfied for the + installation to begin. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to identify the launch condition. + True + + + condition + string + Expression that must evaluate to True for installation to begin. + True + + +

Nested Elements:

+

<description>

+
    + Localizable text to display when the condition fails and the installation must be terminated. +
+

</description>

+

Examples

+ + Create a check to make sure that IIS 5.x is installed. + + <launchconditions> + <launchcondition name="CheckIIS" condition="(IISVERSION = &quot;#5&quot;)" > + <description> + This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again. + </description> + </launchcondition> + </launchconditions> + + +
+
+ + + + Creates custom tables not directly managed by default features of + the installer task. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique name used to identify the table. + True + + +

Nested Elements:

+

<columns>

+
    +

    <column>

    +
      + Defines the columns making up the table +

      Parameters

      + + + Attribute + Type + Description + Required + + + name + string + A unique name used to define the column. + True + + + nullable + bool + When set to true, allows the column to accept null values; false does not allow null values. + True + + + category + msi:MSITableColumnCategoryType + Valid input: + + Text + UpperCase + LowerCase + Integer + DoubleInteger + Time/Date + Identifier + Property + Filename + WildCardFilename + Path + Paths + AnyPath + DefaultDir + RegPath + Formatted + Template + Condition + GUID + Version + Language + Binary + Cabinet + Shortcut + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp + + False + + + type + string + Overrides the category specification. An example of valid input would be: S255 + False + + + key + bool + When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key. + False + + + minvalue + int + This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string. + False + + + maxvalue + int + This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string. + False + + + keytable + string + This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons. + False + + + keycolumn + int + This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32. + False + + + set + string + This is a list of permissible values for this field separated by semicolons. This field is usually used for enums. + False + + + description + string + A description of the data that is stored in the column. + False + + +
    +

    </column>

    +
+

</columns>

+

<rows>

+
    +

    <row>

    +
      + Defines the data for a row in the table +

      <columns>

      +
        +

        <column>

        +
          + Defines data for a specific cell in the row +

          Parameters

          + + + Attribute + Type + Description + Required + + + name + string + Name of the column to populate. + True + + + value + string + Value to populate the cell with. + True + + +
        +

        </column>

        +
      +

      </columns>

      +
    +

    </row>

    +
+

</rows>

+

Examples

+ + + Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table. + + + <tables> + <table name="IniFile"> + <columns> + <column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." /> + <column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " /> + <column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " /> + <column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." /> + <column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" /> + <column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " /> + <column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " /> + <column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " /> + </columns> + <rows> + <row> + <columns> + <column name="IniFile" value="MyInternetShortcut" /> + <column name="FileName" value="MyInternetAddr.url" /> + <column name="DirProperty" value="D__MYDIR" /> + <column name="Section" value="InternetShortcut" /> + <column name="Key" value="URL" /> + <column name="Value" value="[TARGETURL]" /> + <column name="Action" value="0" /> + <column name="Component_" value="C__Documentation" /> + </columns> + </row> + </rows> + </table> + </tables> + + +
+
+ + + + Specifies the directory layout for the product. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + + root + string + A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template: + + AdminToolsFolder + AppDataFolder + CommonAppDataFolder + CommonFiles64Folder + CommonFilesFolder + DesktopFolder + FavoritesFolder + FontsFolder + LocalAppDataFolder + MyPicturesFolder + PersonalFolder + ProgramFilesFolder + ProgramMenuFolder + ProgramFiles64Folder + SendToFolder + StartMenuFolder + StartupFolder + System16Folder + System64Folder + SystemFolder + TARGETDIR + TempFolder + TemplateFolder + WindowsFolder + WindowsVolume + + + True + + +

Nested Elements:

+

<directory>

+
    + Sub directories. Note, this element can contain nested <directory/> sub elements. +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + +
+

</directory>

+

Examples

+ + Define a sample directory structure. + + <directories> + <directory name="D__ACME" foldername="ACME" root="TARGETDIR" > + <directory name="D__ACME_MyProduct" foldername="My Product" /> + </directory> + </directories> + + +
+
+ + + + Used to modify the environment variables of the target computer at + runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The localizable name of the environment variable. The key values are written or removed depending upon + which of the characters in the following table are prefixed to the name. There is no effect in the ordering of + the symbols used in a prefix. + + + Prefix + Description + + + = + Create the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. + + + + + Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. + + + - + Remove the environment variable when the component is removed. This symbol can be combined with any prefix. + + + ! + Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty. + + + * + This prefix is used with Microsoft® Windows® NT/Windows® 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + + =- + The environment variable is set on install and removed on uninstall. This is the usual behavior. + + + !- + Removes an environment variable during an install or uninstall. + + + More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + True + + + append + string + Localizable value that is to be set as a formatted string + True + + + component + string + Refrence to a component. Allows the variabled to be modified when the component is un/installed. + True + + +

Examples

+ + Append the installation path to the user PATH variable. + + <environment> + <variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" /> + </environment> + + +
+
+ + + + Groups sets of files into named sets, these can be used to install + and perform operations on a set of files as one entity. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the component. + True + + + id + string + A string GUID unique to this component, version, and language.
Note that the letters of these GUIDs must be + uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be + changed to uppercase to make these valid component code GUIDs. +
+ True +
+ + attr + int + This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option. + + + Value + Description + + + 0 + Component cannot be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or + run-from-source. Note that if a feature has no components, the feature always shows run-from-source and + run-from-my-computer as valid options. +
+
+ + 1 + Component can only be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. + Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as + valid options. +
+
+ + 2 + Component can run locally or from source. + + + 4 + If this bit is set, the value in the key element is used as a key into the Registry table.
+ If the Value field of the corresponding record in the Registry table is null, the Name field in that record must + not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
+ Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes + the necessary HKCU registry entries when there are multiple users on the same machine. +
+
+ + 16 + If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings. + + + + 32 + If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. + + + 64 + If this bit is set, the installer reevaluates the value of the statement in the Condition column + upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. + If the value was previously True and has changed to False, the installer removes the component even if the component + has other products as clients.
This bit should only be set for transitive components. See Using Transitive + Components. +
+
+ + 128 + If this bit is set, the installer does not install or reinstall the component if a key path file or + a key path registry entry for the component already exists. The application does register itself as a client of + the component.
+ Use this flag only for components that are being registered by the Registry table. +
+
+ + 256 + Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of + packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered + as a 32-bit component. + + +
+
+ True +
+ + directory + string + Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. + True + + + feature + string + Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. + True + + + condition + string + A conditional statement that can control whether a component is installed. If the condition is null or evaluates to + true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not + installed. + False + + + fileattr + int + Integer containing bit flags representing file attributes.
+ The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
+ False +
+ + checkinterop + bool + Used to determine if file(s) in the fileset are interop file(s). If true, extra information will be added in the install + package to register each interop file. If false, the file(s) will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installassembliestogac + bool + Used to determine if assemblies should be installed to the Global Assembly Cache. + If true, all assemblies in the fileset will be added to the GAC. If false, the assemblies will be installed + to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not + also be installed to the directory specified. + False + + + keepsubdirs + bool + Used to determine if directories in the fileset should be built. + If true, all subdirectories of the fileset basedir will be built. If false the directories structure will be + flattened. The default is false. + False + +
+

Nested Elements:

+

<keyfile>

+
    + This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value. +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the key (file) to use. Also, this could be an id of a registry key value. + True + + +
+

</keyfile>

+

<fileset>

+
    + Specifies the files to include with the component +
+

</fileset>

+

<forceid>

+
    + Used to force specific attributes on a per file basis +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the file, in the fileset, to override. + True + + + id + string + Unique GUID to assign to the file. + True + + + attr + int + Integer containing bit flags representing file attributes.
    + The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
    + False +
    + + version + string + This field is the version string for a versioned file. This field is blank for non-versioned files. + False + + + language + string + A list of decimal language IDs separated by commas. + False + + + checkinterop + bool + Used to determine if file is an interop file. If true, extra information will be added in the install + package to register the interop file. If false, the file will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installtogac + bool + If true, and if the file is an assembly, it will be installed to the GAC. If false, the file + will be installed to the directory specified by the component. Note: If an assembly is specified to + be installed into the GAC, it will not also be installed to the directory specified. + False + +
    +
+

</forceid>

+

Examples

+ + Define a sample component structure. + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" > + <key file="default.aspx" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + </component> + </components> + + + + Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR) + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" > + <key file="MyAssemblyName.xml" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + <forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" /> + </component> + </components> + + + + Assign a registry entry to a specific component. + + <components> + <component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" > + <key file="R__822EC365A8754FACBF6C713BFE4E57F0" /> + </component> + </components> + . + . + . + <registry> + <key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry"> + <value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" /> + </key> + </registry> + + +
+
+ + + + Creates custom dialogs that can gather information not handled by + the default installer template. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the dialog. + True + + + hcenter + int + Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. + True + + + vcenter + int + Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. + True + + + width + int + Width of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + height + int + Height of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + attr + int + A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative. + + + Value + Description + + + 1 + Visible + + + 2 + Modal + + + 4 + Minimize + + + 8 + SysModal + + + 16 + KeepModeless + + + 32 + TrackDiskSpace + + + 64 + UseCustomPalette + + + 128 + RTLRO + + + 256 + RightAligned + + + 512 + LeftScroll + + + 896 + BiDi + + + 65536 + Error + + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp + + True + + + title + string + A localizable text string specifying the title to be displayed in the title bar of the dialog box. + True + + + firstcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field identifies a + unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This + column is ignored in an Error dialog box.
+ Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or + VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers. +
+ True +
+ + defaultcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking + on the default control. If this column is left blank, then there is no default control. This column is ignored in the + Error dialog box. + + True + + + cancelcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in + the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
+ The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control + upon receiving a INSTALLMESSAGE_COMMONDATA message. +
+ True +
+
+

Examples

+ + Add a web folder dialog: + + <dialogs> + <dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" /> + </dialogs> + + +
+
+ + + + Creates user interface controls displayed on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. + True + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + type + string + The type of the control. + + + Control name + Description + + + Billboard + Displays billboards based on progress messages. + + + Bitmap + Displays a static picture of a bitmap. + + + CheckBox + A two-state check box. + + + ComboBox + A drop-down list with an edit field. + + + DirectoryCombo + Select all except the last segment of the path. + + + DirectoryList + Displays folders below the main part of path. + + + Edit + A regular edit field for any string or integer. + + + GroupBox + Displays a rectangle that groups other controls together. + + + Icon + Displays a static picture of an icon. + + + Line + Displays a horizontal line. + + + ListBox + A drop-down list without an edit field. + + + ListView + Displays a column of values with icons for selection. + + + MaskedEdit + An edit field with a mask in the text field. + + + PathEdit + Displays folder name or entire path in an edit field. + + + ProgressBar + Bar graph that changes length as it receives progress messages. + + + PushButton + Displays a basic push button. + + + RadioButtonGroup + A group of radio buttons. + + + ScrollableText + Displays a long string of text. + + + SelectionTree + Displays information from the Feature table and enables the user to change their selection state. + + + Text + Displays static text. + + + VolumeCostList + Displays costing information on different volumes. + + + VolumeSelectCombo + Selects volume from an alphabetical list. + + + More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp + True + + + x + int + Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + y + int + Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + width + int + Width of the rectangular boundary of the control. This must be a non-negative number. + True + + + height + int + Height of the rectangular boundary of the control. This must be a non-negative number. + True + + + attr + int + A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. + True + + + property + string + The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. + False + + + text + string + A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. + False + + + nextcontrol + string + The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. + False + + + help + string + Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. + False + + + remove + bool + If true, the control is removed. If false, the control is added. + False + + +

Examples

+ + Remove the Browse button from the customize dialog and add controls for a web dialog + + <controls> + <!-- Remove the Browse button from customize dialog --> + <control dialog="CustomizeDlg" name="Browse" type="PushButton" + x="304" y="200" width="56" height="17" attr="3" remove="true" /> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" remove="true" /> + + <!-- Re add the tree control with the proper next control --> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" + property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" /> + + <!-- Adds the controls associated with the webfolder dialog --> + <control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap" + x="0" y="0" width="374" height="44" attr="1" + text="[BannerBitmap]" nextcontrol="VDirLabel" /> + <control dialog="WebFolderDlg" name="Title" type="Text" + x="15" y="6" width="200" height="15" attr="196611" + text="[DlgTitleFont]Virtual Directory Information" /> + <control dialog="WebFolderDlg" name="Description" type="Text" + x="25" y="23" width="280" height="15" attr="196611" + text="Please enter your virtual directory and port information." /> + <control dialog="WebFolderDlg" name="BannerLine" type="Line" + x="0" y="44" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="VDirLabel" type="Text" + x="18" y="73" width="348" height="15" attr="3" + text="&Virtual directory:" + nextcontrol="Edit_VDir" /> + <control dialog="WebFolderDlg" name="Edit_VDir" type="Edit" + x="18" y="85" width="252" height="18" attr="7" + property="TARGETVDIR" + text="[TARGETVDIR]" + nextcontrol="PortLabel" /> + <control dialog="WebFolderDlg" name="PortLabel" type="Text" + x="18" y="110" width="348" height="15" attr="3" + text="&Port:" + nextcontrol="Edit_Port" /> + <control dialog="WebFolderDlg" name="Edit_Port" type="Edit" + x="18" y="122" width="48" height="18" attr="7" + property="TARGETPORT" + text="[TARGETPORT]" + nextcontrol="Back" /> + <control dialog="WebFolderDlg" name="BottomLine" type="Line" + x="0" y="234" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="Back" type="PushButton" + x="180" y="243" width="56" height="17" attr="3" + text="[ButtonText_Back]" nextcontrol="Next" /> + <control dialog="WebFolderDlg" name="Next" type="PushButton" + x="236" y="243" width="56" height="17" attr="3" + text="[ButtonText_Next]" nextcontrol="Cancel" /> + <control dialog="WebFolderDlg" name="Cancel" type="PushButton" + x="304" y="243" width="56" height="17" attr="3" + text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" /> + </controls> + + +
+
+ + + + Used to validate and perform operations as the result of information + entered by the user into controls on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + action + string + The action that is to be taken on the control. The possible actions are shown in the following table. + + + Value + Description + + + Default + Set control as the default. + + + Disable + Disable the control. + + + Enable + Enable the control. + + + Hide + Hide the control. + + + Show + Display the control. + + + + True + + + condition + string + A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. + True + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + + +

Examples

+ + Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog + + <controlconditions> + <!-- Remove control condition for Browse button on customizeDlg --> + <controlcondition dialog="CustomizeDlg" control="Browse" action="Hide" + condition="Installed" remove="true" /> + <!-- Add control conditions for the web folder dialog --> + <controlcondition dialog="WebFolderDlg" control="Back" action="Disable" + condition="ShowUserRegistrationDlg=""" /> + <controlcondition dialog="WebFolderDlg" control="Back" action="Enable" + condition="ShowUserRegistrationDlg<>""" /> + </controlconditions> + + +
+
+ + + + Used to route the flow of the installation process as the result of + events raised by the user interacting with controls on dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + name + string + An identifier that specifies the type of event that should take place when the user interacts with the control + specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
+ To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { } + into the argument field to enter the null value. +
+ True +
+ + argument + string + A value used as a modifier when triggering a particular event. + True + + + condition + string + A conditional statement that determines whether the installer activates the event in the Event column. The installer + triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column + to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains + a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no + other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field + evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field + is blank it triggers the one event of these with the largest value in the Ordering field. + False + + + order + int + An integer used to order several events tied to the same control. This must be a non-negative number. + False + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + +
+

Examples

+ + Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog + + + <controlevents> + <!-- Remove the old control events --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="ProductID" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" /> + <!-- Remove control events for Browse button on CustomizeDlg --> + <controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse" + argument="BrowseDlg" condition="1" remove="true" /> + + <!-- Add new control events for the web dialog --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="WebFolderDlg" condition="ProductID" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" /> + <controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog" + argument="CancelDlg" order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1" + order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1" + order="0" /> + <!-- Virtual Directory Control Events --> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_CreateURLs" condition="1" order="0" /> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_EvaluateURLsMB" condition="1" order="1" /> + <controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath" + argument="TARGETDIR" condition="1" order="2" /> + <controlevent dialog="WebFolderDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="1" order="3" /> + </controlevents> + + +
+
+ + + + Makes modifications to the Windows Registry of the target computer + at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Refrence to a component. The component that controls the installation of the registry value. + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + + path + string + Registry key. + True + + +

Nested Elements:

+

<value>

+
    + Specifies the registry value to add to the target machine. + + + Attribute + Type + Description + Required + + + name + string + The registry value name (localizable). If this is Null, then the data entered into the Value column are + written to the default registry key.
    + If the Value column is Null, then the strings shown in the following table in the Name column have special + significance. + + + String + Description + + + + + The key is to be created, if absent, when the component is installed. + + + - + The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + + * + The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + +
    + False +
    + + value + string + The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string. + + + Prefix + Description + + + #x + The value is interpreted and stored as a hexadecimal value (REG_BINARY). + + + #% + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + # + The value is interpreted and stored as an integer (REG_DWORD). + + + + If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c." + The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character. + If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings. + Otherwise, the value is interpreted and stored as a string (REG_SZ). + + + False + + + dword + string + A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value. + False + + + id + string + Primary key used to identify a registry record. + False + +
    +
+

</value>

+

Examples

+ + Add the a couple registry entries on the target machine. + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="ProductVersion" value="1.0.0" /> + <value name="ProductDir" value="[TARGETDIR]" /> + <value name="VirtualDir" value="[TARGETVDIR]" /> + </key> + </registry> + + + + Add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value value="1.0.0" /> + </key> + </registry> + + + + Another way to add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="" value="1.0.0" /> + </key> + </registry> + + + + Specify hexadecimal value (REG_BINARY) for the default key + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value> + 1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01, + 00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00, + 00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00, + 00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00, + f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00 + </value> + </key> + </registry> + + +
+
+ + + + Stores icons to be used with shortcuts, file extensions, CLSIDs or + similar uses. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the icon file. + True + + + value + string + The binary icon data in PE (.dll or .exe) or icon (.ico) format. + True + + +

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <icons> + <icon name="CHMICON" value="${resource.dir}\chm.ico" /> + </icons> + + +
+
+ + + + Creates shortcuts on the target computer. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the shortcut. + True + + + directory + string + Reference to a directory. The location of where the shortcut should be created. + True + + + filename + string + The localizable name of the shortcut to be created. + True + + + component + string + Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. + True + + + target + string + The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. + True + + + arguments + string + The command-line arguments for the shortcut.
Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut. +
+ False +
+ + hotkey + string + The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. + False + + + icon + string + Reference to an icon. + False + + + iconindex + int + The icon index for the shortcut. This must be a non-negative number. + False + + + showcmd + int + The Show command for the application window.
The following values may be used. The values are as defined for the Windows API function ShowWindow. + + + Value + Description + + + 1 + SW_SHOWNORMAL + + + 3 + SW_SHOWMAXIMIZED + + + 7 + SW_SHOWMINNOACTIVE + + +
+ False +
+ + wkdir + string + The name of the property that has the path of the working directory for the shortcut. + False + +
+

Nested Elements:

+

<description>

+
    + The localizable description of the shortcut. +
+

</description>

+

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <shortcuts> + <shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" > + <description>My Product help documentation</description> + </shortcut> + </shortcuts> + + +
+
+ + + + Stores the binary data for items such as bitmaps, animations, and + icons. The binary table is also used to store data for custom + actions. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. + True + + + value + string + The binary file to add. + True + + +

Examples

+ + Add the custom action dll to create/modify virtual directories + + <binaries> + <binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" /> + </binaries> + + +
+
+ + + + Used to configure executables that may be run during steps in the + installation process to do things outside the bounds of MSI + technology's feature set. This is the main spot you can extend MSI + technology to perform custom processes via compiled code. + +

Parameters

+ + + Attribute + Type + Description + Required + + + action + string + Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. + True + + + type + string + A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. + True + + + source + string + A property name or external key into another table. For a discussion of the possible custom action sources, see Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
+ Directory table for calling existing executables.
+ File table for calling executables and DLLs that have just been installed.
+ Binary table for calling executables, DLLs, and data stored in the database.
+ Property table for calling executables whose paths are held by a property. +
+ True +
+ + target + string + An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action. + + + Target + Custom Action + + + Entry point (required) + Calling a DLL. + + + Executable name with arguments (required) + Calling an existing executable. + + + Command line arguments (optional) + Calling an executable just installed. + + + Target file name (required) + Creating a file from custom data. + + + Null + Executing script code. + + + + True + +
+

Examples

+ + Add some custom actions related to the virtual directory dialog and custom action. + + <customactions> + <!-- Custom actions creating entry points into the custom action dll specified in the binary table --> + <customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" /> + <customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" /> + <customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" /> + <customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" /> + <customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" /> + <customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" /> + <customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" /> + <customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" /> + + <!-- Custom actions to set default control values in the webfolder dialog --> + <customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" /> + <customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" /> + </customactions> + + +
+
+ + + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents InstallExecuteSequence Table. + installui represents InstallUISequence Table + adminexecute represents AdminExecuteSequence Table + adminui represents AdminUISequence Table + advtexecute represents AdvtUISequence Table + + + True + + + action + string + Name of the action to execute. This is either a built-in action or a custom action. + True + + + value + int + Number that determines the sequence position in which this action is to be executed.
+ A positive value represents the sequence position. A Null value indicates that the action is not executed. The following + negative values indicate that this action is to be executed if the installer returns the associated termination flag. No + more than one action may have a negative value entered in the Sequence field. + + + Value + Description + + + -1 + Successful completion. + + + -2 + User terminates install. + + + -3 + Fatal exit terminates. + + + -4 + Install is suspended. + + +
+ True +
+ + condition + string + This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. + False + +
+

Examples

+ + Add the sequences to support virtual directories + + <sequences> + <sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + </sequences> + + +
+
+ + + + Creates text to be displayed in a progress dialog box and written + to the log for actions that take a long time to execute. The text + displayed consists of the action description and optionally formatted + data from the action. The entries in the ActionText table typically + refer to actions in sequence tables. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the action. + True + + + template + string + A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. + False + + +

Nested Elements:

+

<description>

+
    + Localized description displayed in the progress dialog box or written to the log when the action is executing. +
+

</description>

+

Examples

+ + Add the related action text for the web folder actions. + + <actiontext> + <action name="WEBCA_GatherWebFolderProperties" > + <description>Gathering web folder properties</description> + </action> + <action name="WEBCA_ApplyWebFolderProperties" > + <description>Applying web folder properties</description> + </action> + <action name="WEBCA_RollbackApplyWebFolderProperties" > + <description>Removing web folder properties</description> + </action> + <action name="WEBCA_CreateURLs" > + <description>Creating URLs</description> + </action> + <action name="WEBCA_EvaluateURLs" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_EvaluateURLsNoFail" > + <description>Evaluating URLs and do not fail if URL is invalid</description> + </action> + <action name="WEBCA_EvaluateURLsMB" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_CreateAppRoots" > + <description>Creating application roots</description> + </action> + <action name="WEBCA_TARGETVDIR" > + <description>Set TARGETVDIR property to the specified virtual dir</description> + </action> + <action name="WEBCA_TARGETPORT" > + <description>Set TARGETPORT property to the specified virtual dir port</description> + </action> + </actiontext> + + +
+
+ + + + Adds Verbs and a handler for the specified file type. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. + True + + + extension + string + File name extension to specifically handle + False + + + exepath + string + Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. + False + + + verbs + string + Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. + False + + +

Examples

+ + Add the aspx app mapping + + <appmappings> + <appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" /> + </appmappings> + + +
+
+ + + + Determines the local path equivalent for a url and stores this + information in a property. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The name of the URLProperty to convert + True + + + property + string + The name of the property to store the directory information. + True + + +

Examples

+ + Convert the TARGETURL property to a directory and store that information in TARGETDIR + + <urlproperties> + <urlproperty name="TARGETURL" property="TARGETDIR" /> + </urlproperties> + + +
+
+ + + + Creates a URLProperty representing the virtual directory and port. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Property containing the virtual directory + True + + + portproperty + string + Property containing the network port number to use. + True + + + urlproperty + string + URLProperty to store the url in + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <vdirproperties> + <vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" /> + </vdirproperties> + + +
+
+ + + + Create a Web application definition and marks it as running in-process + or out-of-process. If an application already exists at the specified + path, you can use this method to reconfigure the application from + in-process to out-of-process, or the reverse. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Reference to a component. Determines when the approot will be created. + True + + + urlproperty + string + URLProperty with stored url + True + + + inprocflag + int + Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <approots> + <approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" /> + </approots> + + +
+
+ + + + Specifies directory security in IIS. Can also configure the default + documents supported by each directory. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Reference to a directory. This is the directory that gets modified with the specific attributes. + True + + + attr + int + Attributes to set for the directory. + + + Value + Flag Name + Description + + + 1 + AccessRead + The file or the contents of the folder may be read through Microsoft Internet Explorer. + + + 2 + AccessWrite + Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard. + + + 4 + AccessExecute + The file or the contents of the folder may be executed, regardless of file type. + + + 8 + AccessSSL + File access requires SSL file permission processing, with or without a client certificate. + + + 16 + AccessSource + Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft ® Active Server Pages (ASP) applications. + + + 32 + AccessSSLNegotiateCert + SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true). + + + 64 + AccessSSLRequireCert + SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert. + + + 128 + AccessSSLMapCert + SSL file permission processing maps a client certificate to a Microsoft Windows ® operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur. + + + 256 + AccessSSL128 + File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. + + + 512 + AccessScript + The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served. + + + 1024 + AccessNoRemoteWrite + Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + + + 4096 + AccessNoRemoteRead + Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests. + + + 8192 + AccessNoRemoteExecute + Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests. + + + 16384 + AccessNoRemoteScript + Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + + + 32768 + AccessNoPhysicalDir + Access to the physical path is not allowed. + + + + True + + + defaultdoc + string + Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") + False + + +

Examples

+ + Specify permissions for the directory structure. + + <iisproperties> + <iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" /> + <iisproperty directory="D__BIN" attr="112" /> + <iisproperty directory="D__SomeSubDir" attr="114" /> + </iisproperties> + + +
+
+ + + Summary description for MsiTaskInfo. + + + + + Loads the banner image. + + The MSI database. + + + + Loads the background image. + + The MSI database. + + + + Loads the license file. + + The MSI database. + + + + Loads records for the Media table. + + The MSI database. + The sequence number of the last file in the .cab. + + + + Loads records for the Features table. + + The MSI database. + + + + Adds a feature record to the Features table. + + The MSI database Feature table. + The MSI database Condition table. + The name of this feature's parent. + The MSI database. + This Feature's Schema element. + The tree depth of this feature. + The tree order of this feature. + + + + Loads records for the LaunchCondition table + + The MSI database. + + + + Merges Merge Modules into the MSI Database. + + The MSI Database. + The path to temporary files. + + + + Creates a Windows Installer (also known as Microsoft Installer, or MSI) setup database for installing software on the Windows Platform. + + + + Requires cabarc.exe in the path. This tool is part of the + Microsoft Cabinet SDK. + + + Requires mergemod.dll version 2.0 or greater. This dll is part of the + Microsoft Platform SDK. + + + See the Roadmap to Windows Installer Documentation + at Microsoft's MSDN website for more information. + + + + + + Initializes task and verifies parameters. + + Node that contains the XML fragment used to define this task instance. + + + + Executes the task. + + + + + An .rtf (rich text format) file containing the license agreement + for your software. The contents of this file will be displayed to + the user when setup runs and must be accepted to continue. + + + + + A .bmp (bitmap) file 495x60 pixels in size that will be displayed + as the banner (top) image of the installation user interface. + + + + + A .bmp (bitmap) file 495x315 pixels in size that will be displayed + as the background image of the installation user interface. + + + + + + Groups sets of components into named sets, these can be used to + layout the tree control that allows users to select and deselect + features of your software product when a custom installation is + selected at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the feature. + True + + + display + int + The number in this field specifies the order in which the feature is to be displayed in the user interface. + The value also determines if the feature is initially displayed expanded or collapsed.
+ If the value is null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. + If the value is even, the feature node is collapsed initially. +
+ True +
+ + title + string + Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog. + False + + + typical + bool + Determines if the feature should be included in a "typical" install. This is useful for when the user selects to just install the typical features. + False + + + directory + string + Refrence to a directory. Specify a corresponding directory to go with the feature. + False + + + attr + int + Any combination of the following: + + + Value + Description + + + 0 + Components of this feature that are not marked for installation from source are installed locally. + + + 1 + Components of this feature not marked for local installation are installed to run from the source CD-ROM or server. + + + 2 + Set this attribute and the state of the feature is the same as the state of the feature's parent. + + + 4 + Set this attribute and the feature state is Advertise. + + + 8 + Note that this bit works only with features that are listed by the ADVERTISE property.
Set this attribute to prevent the feature from being advertised.
+
+ + 16 + Set this attribute and the user interface does not display an option to change the feature state to Absent. Setting this attribute forces the feature to the installation state, whether or not the feature is visible in the UI. + + + 32 + Set this attribute and advertising is disabled for the feature if the operating system shell does not support Windows Installer descriptors. + +
+ More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp +
+ False +
+
+

Nested Elements:

+

<feature>

+
    + Nested feature elements are supported. +
+

</feature>

+

<description>

+
    + Longer string of text describing the feature. This localizable string is displayed by the Text control of the Selection Dialog. +
+

</description>

+

<conditions>

+
    +

    <condition>

    +
      + + + Attribute + Type + Description + Required + + + expression + string + If this conditional expression evaluates to TRUE, then the Level column in the Feature table is set to the + conditional install level.
      + The expression in the Condition column should not contain reference to the installed state of any feature or component. + This is because the expressions in the Condition column are evaluated before the installer evaluates the installed + states of features and components. Any expression in the Condition table that attempts to check the installed state + of a feature or component always evaluates to false.
      + For information on the syntax of conditional statements, see Conditional Statement Syntax. +
      + True +
      + + level + int + The installer sets the install level of this feature to the level specified in this column if the expression in + the Condition column evaluates to TRUE. Set this value to 0 to have the component not install if the condition is not met.
      + For any installation, there is a defined install level, which is an integral value from 1 to 32,767. The initial value + is determined by the InstallLevel property, which is set in the Property table.
      + A feature is installed only if the feature level value is less than or equal to the current install level. The user + interface can be authored such that once the installation is initialized, the installer allows the user to modify the + install level of any feature in the Feature table. For example, an author can define install level values that represent + specific installation options, such as Complete, Typical, or Minimum, and then create a dialog box that uses + SetInstallLevel ControlEvents to enable the user to select one of these states. Depending on the state the user selects, + the dialog box sets the install level property to the corresponding value. If the author assigns Typical a level of 100 + and the user selects Typical, only those features with a level of 100 or less are installed. In addition, the Custom + option could lead to another dialog box containing a Selection Tree control. The Selection Tree would then allow the user + to individually change whether each feature is installed.
      + True +
      +
      +
    +

    </condition>

    +
+

</conditions>

+

Examples

+ + Define a sample features structure. + + <features> + <feature name="F__Default" title="My Product" display="1" typical="true" directory="TARGETDIR"> + <description>My Product from ACME, Inc. </description> + <feature name="F__MainFiles" display="0" typical="true" /> + </feature> + <feature name="F__Help" title="My Product Help Files" display="1" typical="false" directory="D__ACME_MyProduct_Help" /> + </features> + + +
+
+ + + + Includes pre-packaged installation components (.msm files) as part + of the msi database. This feature allows reuse of installation + components that use MSI technology from other setup vendors or as + created by the . + +

Parameters

+ + + Attribute + Type + Description + Required + + + feature + string + Refrence to a feature. Used to associate the merge module with the feature (and the feature's directory) for when to install the components in the merge module. + True + + +

Nested Elements:

+

<modules>

+
    + Specifies the merge module(s) to include with the specified feature. +
+

</modules>

+

<configurationitems>

+
    +

    <configurationitem>

    +
      + Specifies the value for a configurable item +

      Parameters

      + + + Attribute + Type + Description + Required + + + module + string + Merge module filename to limit the configuration item to. If this is not set, the configuration item will be applied to all merge modules in the fileset. + True + + + name + string + Name of item for which data is to be set + True + + + value + string + Value of the configurable item + True + + +
    +

    </configurationitem>

    +
+

</configurationitems>

+

Examples

+ + Add the NAnt merge module to the install. + + <mergemodules> + <merge feature="F__NAntMSM"> + <modules> + <include name="${nant.dir}\Install\NAnt.msm" /> + </modules> + </merge> + </mergemodules> + + + + Add a Visual Studio .wid package (merge module) and specify some configurable items. + + <mergemodules> + <merge feature="F__DefaultFeature"> + <modules> + <include name="VsdReadmeDlg.wid" /> + </modules> + <configurationitems> + <configurationitem name="BannerBitmap" value="CONFIGURED_BANNERBITMAP" /> + <configurationitem module="VsdReadmeDlg.wid" name="ReadmeText" value="CONFIGURED_READMETEXT" /> + </configurationitems> + </merge> + </mergemodules> + + +
+
+ + + Summary description for MsmTaskInfo. + + + + + Loads records for the ModuleSignature table. + + The MSM database. + + + + Loads records for the ModuleDependency table. + + The MSM database. + + + + Loads records for the ModuleExclusion table. + + The MSM database. + + + + Loads records for the ModuleInstallUISequence, ModuleInstallExecuteSequence, + ModuleAdminUISequence, ModuleAdminExecute, and ModuleAdvtExecuteSequence tables. + + The MSM database. + + + + Loads records for the ModuleIgnoreTable table. + + The MSM database. + + + + Loads records for the ModuleSubstitution table. + + The MSM database. + + + + Loads records for the ModuleConfiguration table. + + The MSM database. + + + + Builds a Windows Installer Merge Module (MSM) database. + + + Requires cabarc.exe in the path. This tool is part of the + http://msdn.microsoft.com/library/en-us/dncabsdk/html/cabdl.asp">Microsoft Cabinet SDK. + + + + + Initializes task and verifies parameters. + + Node that contains the XML fragment used to define this task instance. + + + + Executes the task. + + + + + Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature + + + + + Specifies the numeric language ID or IDs for a merge module. + + + + + Stores the version number of a merge module. + + + + + + Lists other merge modules that are required for this merge module + to operate properly. + + + Contains any number of dependency elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. + True + + + version + string + Version of the dependent merge module. If ommited, any version fills the dependency. + False + + +

Examples

+ + Make sure that the NAnt merge module is included + + <moduledependencies> + <dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" /> + </moduledependencies> + + +
+
+ + + + Lists other merge modules that are incompatible in the same + installer database. + + + Contains any number of exclusion elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows. + + + ExcludedLanguage + Description + + + > 0 + Exclude the language IDs specified by ExcludedLanguage. + + + = 0 + Exclude no language IDs. + + + < 0 + Exclude all language IDs except those specified by ExcludedLanguage. + + + + True + + + minversion + string + Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + + maxversion + string + Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + +

Examples

+ + Exclude the all NAnt merge modules created before version 0.85.0 + + <moduleexclusions> + <exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" /> + </moduleexclusions> + + +
+
+ + + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents ModuleInstallExecuteSequence Table. + installui represents ModuleInstallUISequence Table + adminexecute represents ModuleAdminExecuteSequence Table + adminui represents ModuleAdminUISequence Table + advtexecute represents ModuleAdvtUISequence Table + + + True + + + action + string + Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table.
If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted.
+ True +
+ + sequence + int + The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted
When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions.
+ False +
+ + baseaction + string + Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. + False + + + after + bool + Boolean for whether Action comes before or after BaseAction + + + Value + Description + + + True + Action to come after BaseAction + + + False + Action to come before BaseAction + + + + False + + + condition + string + A conditional statement that indicates if the action is be executed. + False + +
+
+
+ + + + If a table in the merge module is listed in the ModuleIgnoreTable + table, it is not merged into the .msi file. If the table already + exists in the .msi file, it is not modified by the merge. The tables + in the ModuleIgnoreTable can therefore contain data that is unneeded + after the merge. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table in the merge module that is not to be merged into the .msi file. + True + + +

Examples

+ + Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0 + + <moduleignoretables> + <table name="ModuleConfiguration" /> + <table name="ModuleSubstitution" /> + <table name="_ModuleConfigurationGroup" /> + </moduleignoretables> + + +
+
+ + + + The ModuleSubstitution table specifies the configurable fields of a + module database and provides a template for the configuration of each + field. The user or merge tool may query this table to determine what + configuration operations are to take place. This table is not merged + into the target database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table being modified in the module database. + True + + + row + string + Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined.
Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value.
+ True +
+ + column + string + Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. + True + + + value + string + Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails. + + + This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'. + + + The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious." + + + Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid. + + + If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function. + + + If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules. + + + The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features. + + + If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list. + + + If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field. + + + If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone. + + + If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used. + + + + False + +
+
+
+ + + + Identifies the configurable attributes of the module. This table is + not merged into the database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. + True + + + format + msi:MSMModuleConfigurationFormat + Specifies the format of the data being changed + + text + key + integer + bitfield + + + True + + + type + string + Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. + False + + + contextdata + string + Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. + False + + + defaultvalue + string + Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally.
Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state.
+ False +
+ + attr + int + Bit field containing attributes for this configurable item. Null is equivalent to 0. + + + Value + Description + + + 1 + This attribute only applies to records that list a foreign key to a module table in their DefaultValue field. + + + 2 + When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types. + + + + False + + + displayname + string + Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. + False + + + description + string + Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. + False + + + helplocation + string + Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. + False + + + helpkeyword + string + Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. + False + +
+
+
+ + + Maintains a forward reference to a .tlb file + in the same directory as an assembly .dll + that has been registered for COM interop. + + + + + Creates a new . + + The typelibrary id. + The typelibrary filename. + The name of the assembly. + The feature containing the typelibrary's file. + The name of the Assembly's component. + + + + Retrieves the name of the Assembly's component. + + The Assembly's component Name. + + + + Retrieves the typelibrary filename. + + The typelibrary filename. + + + + Retrieves the typelibrary id. + + The typelibrary id. + + + + Retrieves the name of the assembly. + + The name of the assembly. + + + + Retrieves the feature containing the typelibrary's file. + + The feature containing the typelibrary's file. + + + + A task that generates a summary HTML + from a set of NUnit xml report files. + + + + This task can generate a combined HTML report out of a set of NUnit + result files generated using the XML Result Formatter. + + + All the properties defined in the current project will be passed + down to the XSLT file as template parameters, so you can access + properties such as nant.project.name, nant.version, etc. + + + + + + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + + This is where the work is done + + + + + Load a stylesheet from the assemblies resource stream. + + File name of the file to extract. + + + + Load a stylesheet from the file system. + + The XSLT file to load. + + + + Initializes the XmlDocument instance + used to summarize the test results + + + + + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + + + + + Run the transform and output to filename + + + + + + + The format of the generated report. The default is + . + + + + + The output language. + + + + + Open all description method. Default to "false". + + + + + The directory where the files resulting from the transformation + should be written to. The default is the project's base directory. + + + + + Set of XML files to use as input + + + + + Set of summary XML files to use as input. + + + + + XSLT file used to generate the report if is + . + + + + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + + + + + Loads the specified file from our internal resources if its there + + + + + + + + + Adds files to a PVCS repository. + + + + This task uses the addfiles PCLI command to add files to a PVCS repository. + + + + + Adds File1.txt and File2.txt to the root level of the + project database specified by the project-database property. + + + + + + + + + ]]> + + + + + Adds File1.txt and File2.txt to the folder project + of the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds another_file.txt and all files and folders at and below + C:\Data to the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds all files at and below C:\Data\ to the project database specified by the project-database + property. Workfiles will be copied to the workfile location and will overwrite any existing files (as + dictated by the copymode attribute). The relevant revisions will be locked in PVCS. Added files + will be assigned the SYSTEST promotion group. + + + + + + + + ]]> + + + + + + Base class for all PVCS project database tasks that operate against one or more entities. + + + + + A base class for PVCS tasks that deal with project databases. + + + + This class can be used as a base class for PVCS tasks that operate against a project database. It provides + common attributes and functionality for such tasks. + + + + + + Base class functionality for all PVCS tasks. + + + + + + + + This is the PCLI process that is run by this task. + + + + + Starts the process that is wrapped by this PVCS task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. + + + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + + + + + Prepares the process wrapped by this task for execution. + + The process to prepare for execution. + + + + Allows tasks to add their task-specific arguments to the collection of arguments to be passed to the + PVCS command-line tool. + + The collection of arguments. + + + + Constructs the program arguments that should be used when executing the wrapped PVCS process. + + A string containing the program arguments. + + + + Gets or sets the location of the PVCS binary command-line tools. + + + + Generally, the PVCS command-line tools will be available on the current path. However, if this is not + the case then this property allows an exact location to be specified. If this property is not set, the + task will assume that the PVCS binaries are available on the current path. + + + + + + Gets or sets the process that is run as a result of running this task. + + + + + Gets the program arguments with which to run the wrapped PVCS process. + + + + + Gets the executable name for the command-line tool to run for the PVCS task. + + + + + Gets the PCLI command name that corresponds to the operation the task performs. + + + + By default, this property will return the name of the task minus the starting "pvcs". Subclasses need + only override this property if there is a mismatch between the task name and the PCLI command name. + + + + + + + + + + + + + + + + + + + + + + + + Set to true if the property is manipulated. Some tasks don't + support this property and so an exception will be thrown if the property is used. + + + + + + + + Gets or sets a value indicating whether the operation should include subprojects. + + + + This is equivalent to the -z command-line option. + + + + + + Gets a value indicating whether the specific task implementation supports the includesubprojects + task attribute. If not, an exception will be thrown if an attempt is made to set the attribute. + + + + + Gets or sets the password to use when connecting to the project database. + + + + This is equivalent to the password part of the -id command-line option. + + + + + + Gets or sets the user ID to use when connecting to the project database. + + + + This is equivalent to the user ID part of the -id command-line option. + + + + + + Gets or sets the workspace to use when connecting to the project database. + + + + This is equivalent to the -sp command-line option. + + + + + + Gets or sets the project database to utilize during the operation. + + + + This is equivalent to the -pr command-line option. + + + + + + Gets or sets the project path to utilize during the operation. + + + + This is equivalent to the -pp command-line option. + + + + + + + + + Constructs and initializes an instance of PVCSMultipleEntityTask. + + + + + + + + Gets or sets the entities involved in the operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSAddFilesTask. + + + + + + + + Gets or sets the archive description for versioned files. + + + + This is equivalent to the -t parameter to the pcli addfiles command. + + + + + + Gets or sets the copy mode for the operation. + + + + + Gets or sets a value indicating whether workfiles will be deleted after adding them to PVCS. + + + + This is equivalent to the -d parameter to the pcli addfiles command. + + + + + + Gets or sets the description for versioned files. + + + + This is equivalent to the -m parameter to the pcli addfiles command. + + + + + + Gets or sets a value indicating whether versioned files should be locked after being added to PVCS. + + + + This is equivalent to the -l parameter to the pcli addfiles command. + + + + + + Gets or sets the promotion group to which added files will be assigned. Setting this attribute to an + empty string indicates the versioned files will not be assigned to any promotion group. + + + + This is equivalent to the -g parameter to the pcli addfiles command. + + + + + + Gets or sets a value indicating whether workfiles shouldn't be added if they already exist in the PVCS + repository. + + + + This is equivalent to the -qw parameter to the pcli addfiles command. + + + + + + Gets or sets the version label to assign to the added versioned files. + + + + This is equivalent to the -v parameter to the pcli addfiles command. + + + + + + Specifies possible copy modes for the task. + + + + + Indicates the default copy mode should be used. + + + + + Indicates that workfiles should be copied to the project workfile location is it doesn't already exist. + + + + + Indicates that workfiles should be copied to the project workfile location and overwrite any existing + workfile. + + + + + Adds a user to a PVCS project or project database. + + + + This task uses the adduser PCLI command to add the user to the PVCS project or database. + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. + + + + ]]> + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. The user's logon will expire on the 26th of October, 2005. + + + + ]]> + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSAddUserTask. + + + + + + + + Gets or sets the expiration date for the new user. + + + + This is equivalent to the -e parameter to the pcli adduser command. + + + + + + Gets or sets the password for the new user. + + + + + Gets or sets the user name for the new user. + + + + + + + + Assigns a promotion group to versioned files. + + + + This task uses the assigngroup PCLI command to assign the group to versioned files. + + + + + Assigns the SYSTEST promotion group to all entities with the DEV promotion group in the + folder project. + + + + ]]> + + + + + Assigns the SYSTEST promotion group to revision 1.2 of all entities. + + + + ]]> + + + + + + Base class for all PVCS project database tasks that operate against a single entity. + + + + + + + + + + + Gets or sets the entity involved in the operation. + + + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSAssignGroupTask. + + + + + + + + Gets or sets the promotion group to assign to the versioned files. + + + + This is equivalent to the -g parameter to the pcli assigngroup command. + + + + + + Gets or sets the promotion group for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + + + + + Gets or sets the revision for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + + If this property has not yet been set, it will return Double.MaxValue. + + + + + + Gets or sets the version label for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + + + + + Changes the promotion group for specified versioned files. + + + + This task uses the changegroup PCLI command to change the group for versioned files. + + + + + Changes the promotion group for file.txt from SYSTEST to DEV. + + + + ]]> + + + + + Changes the promotion group for all files from DEV to PROD. + + + + ]]> + + + + + + + + + + + + + + + Gets or sets the promotion group to change from. + + + + This is equivalent to the -gf parameter to the pcli changegroup command. + + + + + + Gets or sets the promotion group to change to. + + + + This is equivalent to the -gt parameter to the pcli changegroup command. + + + + + + Encapsulates the details of a PVCS command argument. + + + + PVCS tasks must "fill in" a collection of arguments to be passed to the PVCS command line interface (PCLI). + This class represents one such argument. + + + Each argument consists of a command and an optional command value. The command is always passed to the PVCS + command line utility and is therefore required. An example of a command is "-g" which is passed to many + PVCS command line utilities to specify a promotion group. + + + The command value is used to specify extra information to the command. For example, if the command is "-g" + then the command value would be the name of the promotion group. + + + The command can be assigned a position (see the property). This position defines + where the command appears relative to other commands. For example, some commands must appear after other + commands. Therefore, they should be assigned a position of . + + + + + + + + + + + + + + + Constructs an instance of PVCSCommandArgument with the specified information. No value is + applied and the argument has a position of . + + The command string. + + + + Constructs an instance of PVCSCommandArgument with the specified information. The argument has + a position of . + + The command string. + The value for the command, or null if no value applies. + + + + Constructs an instance of PVCSCommandArgument with the specified information. + + The command string. + The value for the command, or null if no value applies. + The position for the command. + + + + Compares two PVCS command arguments based on their position. + + The PVCS command argument to compare to this. + + Less than zero if this instance is less than . + Zero if this instance is equal to . + Greater than zero if this instance is greater than . + + + + + Converts this command argument to its string representation. + + The string representation of this command argument. + + + + Escapes a string command line argument. + + + + This method attempts to deal with the mess of keeping both PCLI and the shell happy with string + arguments. It's not perfect yet (try an argument with several backslashes before a double quote). It + would be nice to have a regex to handle this but I wouldn't even bother until this logic is spot on. + + + The string argument to escape. + The escaped string argument. + + + + Gets a string that contains the command to pass to PVCS. + + + + + Gets the value to append to . + + + + If this property is null, no value will be appended to the command. + + + + + + Gets the position for the command. + + + + + Implements a type-safe collection of s. + + + + + + + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + + + + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + + The position for the new command. + + + + Adds all specified command arguments to this collection. + + The collection of command arguments to add. + + + + + + + + + + + + + + + + Retrieves an array of objects in this collection. + + An array of command arguments in this collection. + + + + + + + + + + + + + Allows the objects in the collection to be manipulated. + + + + + Defines possible values for specifying positions for PCLI command arguments and arguments to PCLI itself. + + + + Members of this enumeration are used to specify relative positions of PCLI command arguments. All arguments + given a position of will appear after arguments with a position of + or . Similarly, arguments with a position of will appear after + those with a position of but before those with a position of . + + + No order is guaranteed for arguments with the same position. That is, if two arguments have a position of + , it is not possible to specify which one is output to the command line first. + + + The member is special in that it ensures the argument will appear before + the PCLI command name. This is useful when the argument is to PCLI itself, not the PCLI command. + + + + + + Arguments that should appear before the PCLI command argument. This is useful for arguments to PCLI + itself (as opposed to the PCLI command). + + + + + PCLI command arguments that should appear before other PCLI command arguments. + + + + + PCLI command arguments that should appear before other arguments with a position of + but after other arguments with a position of . + + + + + PCLI command arguments that should appear after other PCLI command arguments. + + + + + Creates a project in a PVCS repository. + + + + This task uses the createproject PCLI command to create the project in the PVCS repository. + + + + + Creates a project called Songs in the project database specified by the project-database + property. The workfile location for the project is set to C:\Work\Songs. + + + + ]]> + + + + + + + + + + + + Gets or sets the workfile location for the created project. + + + + This is equivalent to the -w parameter to the pcli createproject command. + + + + + + + + + Removes a specified promotion group from versioned files. + + + + This task uses the deletegroup PCLI command to remove the promotion group from the versioned files. + + + + + Removes the DEV promotion group from App.ico in the project database specified by the + project-database property. + + + + ]]> + + + + + Removes the DEV promotion group all files in the project database specified by the + project-database property. + + + + ]]> + + + + + + + + + + + + Gets or sets the promotion group to delete. + + + + This is equivalent to the -g parameter to the pcli deletegroup command. + + + + + + Removes a label from specified versioned files or projects. + + + + This task uses the deletelabel PCLI command to remove the version label from the versioned files. + + + + + Removes the label called My Label from the versioned file called App.ico from the project + database specified by the project-database property. + + + + + + + + ]]> + + + + + Removes the label called My Label from all files at and below both folder1 and folder2 + in the project database specified by the project-database property. + + + + + + + + + ]]> + + + + + + + + + + + + Gets or sets the version label to remove. + + + + This is equivalent to the -v parameter to the pcli deletelabel command. + + + + + + Deletes folder, projects, versioned items and workspaces in a PVCS repository. + + + + This task uses the delete PCLI command to delete the items. + + + + + Deletes the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Deletes the files called file1.txt and file2.txt from the project called folder in the + project database specified by the project-database property. + + + + + + + + + ]]> + + + + + + + + + Deletes the specified users from the PVCS access control database. + + + + This task uses the deleteuser PCLI command to delete the users. + + + + + Deletes the users called kb, kv and tb from the project database specified by the + project-database property. + + + + + + + + + + ]]> + + + + + + + + + + + + Gets files from a PVCS repository. + + + + This task uses the get PCLI command to get the versioned files from PVCS. + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. The file is also locked. + + + + + + + + ]]> + + + + + Gets all revisions assigned the SYSTEST promotion group from the project database specified by the + project-database property. The workfiles are touched after the get operation. + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSGetTask. + + + + + + + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli get command. + + + + + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli get command. + + + + + + Gets or sets a value indicating whether revisions involved in the get operation should be locked. + + + + This is equivalent to the -l parameter to the pcli get command. + + + + + + Gets or sets whether the workfiles should be made writable. + + + + This is equivalent to the -w parameter to the pcli get command. + + + + + + Gets or sets the maximum date and time of workfiles to retrieve. + + + + This is equivalent to the -d parameter to the pcli get command. + + + If this property has not yet been set, it will return DateTime.MaxValue. + + + + + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli get command. + + + + + + Gets or sets the promotion group to get. + + + + This is equivalent to the -g parameter to the pcli get command. + + + + + + Gets or sets the revision to get against. + + + + This is equivalent to the -r parameter to the pcli get command. + + + If this property has not yet been set, it will return Double.MaxValue. + + + + + + Gets or sets a value indicating whether workfiles should be touched after the get. + + + + This is equivalent to the -t parameter to the pcli get command. + + + + + + Gets or sets a value indicating whether workfiles should only be gotten if they are newer than the + current workfile. + + + + This is equivalent to the -u parameter to the pcli get command (without specifying a + date or time). + + + + + + Gets or sets the version label to get against. + + + + This is equivalent to the -v parameter to the pcli get command. + + + + + + Assigns a version label to a revision of the specified versioned files. + + + + This task uses the label PCLI command to label the items. + + + + + Labels all files in the project database specified by the project-database property. The label + applied is Beta. + + + + + + + + ]]> + + + + + Labels revision 1.8 of App.ico as Dodgy in the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSLabel. + + + + + + + + Gets or sets a value indicating whether the label should "float" to the newest revision. + + + + This is equivalent to the -f parameter to the pcli label command. + + + + + + Gets or sets the revision to label. + + + + This is equivalent to the -r parameter to the pcli label command. + + + If this property has not yet been set, it will return Double.MaxValue. + + + + + + Gets or sets the version label to assign. + + + + This is equivalent to the -v parameter to the pcli label command. + + + + + + Locks a revision of the specified versioned files. + + + + This task uses the lock PCLI command to lock the versioned files. + + + + + Locks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Locks all files at and below folder in the project database specified by the project-database + property. + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSLock. + + + + + + + + Gets or sets a value indicating whether locking files will take place if checking in those files would + result in a branch. + + + + This is equivalent to the -nb parameter to the pcli lock command. + + + + + + Gets or sets a value indicating whether already locked revisions will be locked. + + + + This is equivalent to the -nm parameter to the pcli lock command. + + + + + + Gets or sets the promotion group to assign the locked revision. + + + + This is equivalent to the -g parameter to the pcli lock command. + + + + + + Gets or sets the revision to lock. + + + + This is equivalent to the -r parameter to the pcli lock command. + + + If this property has not yet been set, it will return Double.MaxValue. + + + + + + Gets or sets a value indicating whether revisions will be locked even if that will result in a branch + upon check in. + + + + This is equivalent to the -yb parameter to the pcli lock command. + + + + + + Gets or sets a value indicating whether revisions will be locked even if that will result in multiple + locks against the same revision. + + + + This is equivalent to the -ym parameter to the pcli lock command. + + + + + + Promotes versioned files to the next promotion group. + + + + This task uses the promotegroup PCLI command to promote versioned files. + + + + + Promotes all files in the root of the project database specified by the project-database property. + The files are promoted from the DEV promotion group to the next. Promotion will not take place across + branches. + + + + ]]> + + + + + Promotes all files in the project database specified by the project-database property. The files are + promoted from the SYSTEST promotion group to the next. Promotion will take place across branches. + + + + ]]> + + + + + + + + + + + + + + + Gets or sets a value indicating whether the promotion may occur across branches. + + + + This is equivalent to the -nb and -yb parameters to the pcli promotegroup command. + + + + + + Gets or sets the promotion group to be promoted. + + + + This is equivalent to the -g parameter to the pcli promotegroup command. + + + + + + Puts files into a PVCS repository. + + + + This task uses the put PCLI command to put the files into PVCS. + + + + + Puts the file called App.ico into the project database specified by the project-database + property. The description for the change is Added more colour. + + + + + + + + ]]> + + + + + Puts all files into the project database specified by the project-database property. The description + for the changes is Major changes. Even if the workfiles have not been changed, they will result in a + new revision in PVCS. + + + + + + + + ]]> + + + + + Puts file.txt and all files in folder into the project database specified by the + project-database property. The description for the changes is Some changes. A new branch is + forcibly created via the forcebranch attribute. Leading and trailing whitespace is ignored when + determining whether the workfile has been altered. + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSPut. + + + + + + + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether unchanged workfiles should be checked in. + + + + This is equivalent to the -yf parameter to the pcli put command. + + + + + + Gets or sets the description to be applied to the checked in revisions. + + + + This is equivalent to the -m parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether the version label specified by + should float. + + + + This is equivalent to the -fv parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether a new branch will be created. + + + + This is equivalent to the -fb parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether leading and trailing spaces should be ignored when determining + whether the revision has changed. + + + + This is equivalent to the -b parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether the workfile should kept in its original state. + + + + This is equivalent to the -k parameter to the pcli put command. + + + + + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli put command. + + + + + + Gets or sets a value indicating the files should be locked after the put operation. + + + + This is equivalent to the -l parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli put command. + + + + + + Gets or sets the promotion in use. If a promotion group is specified, this option identifies the + promotion group to which the revision is currently assigned. If no promotion group is specified (ie. + this property is set to an empty string), this option indicates that one is not identifying the + revision by promotion group. + + + + This is equivalent to the -g parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether the version label specified by + should be reassigned if it already exists. + + + + This is equivalent to the -yv parameter to the pcli put command. + + + + + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli put command. + + + + + + Gets or sets a value indicating whether the same description should be used for all versioned items. + This is true by default. + + + + This is equivalent to the -ym parameter to the pcli put command. + + + + + + Gets or sets the version label to assign to the new revisions. + + + + This is equivalent to the -v parameter to the pcli put command. + + + + + + Renames a label in a PVCS repository. + + + + This task uses the renamelabel PCLI command to rename the label. + + + + + Renames the label on App.ico from Beater to Beta in the project database specified by + the project-database property. + + + + + + + + ]]> + + + + + Renames the label on all files from Alfa to Alpha in the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + + + + + + + + + + + Gets or sets the existing label. + + + + This is equivalent to the -vf parameter to the pcli renamelabel command. + + + + + + Gets or sets the new label. + + + + This is equivalent to the -vt parameter to the pcli renamelabel command. + + + + + + Unlocks revisions of versioned files in a PVCS repository. + + + + This task uses the unlock PCLI command to perform the unlock operation. + + + + + Unlocks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Unlocks all files in the project specified by the project-database property. Locks by all users are + removed. + + + + + + + + ]]> + + + + + + + + + + + + + + + Constructs and initializes an instance of PVCSUnlock. + + + + + + + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli unlock command. + + + + + + Gets or sets the unlock mode for the operation. + + + + This is equivalent to the -u parameter to the pcli unlock command. + + + + + + Gets or sets the user whose locked files are to be unlocked. This is relevant only when + is set to . + + + + + Specifies possible modes for the task. + + + + + All locks held by the current user are removed. + + + + + All locks held by a specified user are removed. + + + + + All locks held by all users are removed. + + + + + Open file(s) in a client workspace for addition to the depot. + + + + Add all cs files under the given directory into the "new" changelist + (will be created if it doesn't already exist). + + + + ]]> + + + + Add Test.txt into the default changelist. + + + ]]> + + + + + + Base class for Perforce (P4) NAnt tasks. See individual task for example usage. + P4Add + P4Change + P4Delete + P4Edit + P4Label + P4Labelsync + P4Print + P4Reopen + P4Revert + P4Submit + P4Sync + + + + + Execute the perforce command assembled by subclasses. + + + + + The p4 server and port to connect to. The default is "perforce:1666". + + + + + The p4 client spec to use. The default is the current client. + + + + + The p4 username. The default is the current user. + + + + + The client, branch or label view to operate upon. The default is + "//...". + + + + + Prepends a descriptive field (for example, text:, info:, error:, exit:) + to each line of output produced by a Perforce command. This is most + often used when scripting. The default is . + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Override the ExeName paramater for p4.exe + + + + + Derived classes should override this to provide command-specific + commandline arguments. + + + + + Build the command string for this particular command. + + + The command string for this particular command. + + + + + File(s) to add. File name can contain wildcard characters. (Note: + this is not using p4 wildcard syntax, but the OS wildcards). + + + + + Changelist that files will be added into. Changelist will be created + if not already present. + + + + + File Type settings. Applied to all files in the + parameter. + + + + + This is an override used by the base class to get command specific args. + + + + + Create or delete a changelist specification. + + + Create a new changelist called "mynewchange". + + + ]]> + + + + Delete the changelist called "mynewchange". + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Changelist to create or delete. + + + + + If causes passed in changelist to be + deleted. The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Add/modify/delete a client spec in perforce. + + + + Add a client (modify if already present and have sufficient rights). + + + + ]]> + + + + Delete a client. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Name of client to create/delete. + + + + + Root path for client spec. + + + + + Delete the named client. The default is . + + + + + Force a delete even if files are open. The default is + . + + + + + This is an override used by the base class to get command specific args. + + + + + Open file(s) in a client workspace for deletion from the depot. + + + + Mark all cs files under the give view for deletion and place them in + the "Deleting" changelist. + + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Changelist to place the marked for deletion item into. + + + + + The client, branch or label view to operate upon. + + + + + This is an override used by the base class to get command specific args. + + + + + Opens file(s) in a client workspace for edit. + + + + Open all files in the ProjectX Test folder for edit, and place into + the default changelist. + + + + ]]> + + + + + Open all *.txt files in the ProjectX Test folder for edit, and place + into the "testing" changelist. + + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Changelist to place the opened files into. + + + + + File Type settings. + + + + + The client, branch or label view to operate upon. + + + + + This is an override used by the base class to get command specific args. + + + + + Returns information from the "p4 info" command back into variables for + use within the build process. + + + Fill the variables using the task. + + + + ]]> + + + + + + The name of the property to store the p4 user name in. + + + + + The name of the property to store the p4 client name in. + + + + + The name of the property to store the p4 host name in. + + + + + The name of the property to store the p4 client root in. + + + + + Create or edit a label specification and its view. + + + Create a new label called "SDK_V1.2". + + + ]]> + + + + Delete the previously created label. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Name of label to create/delete. + + + + + Delete the named label. The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Synchronize a label with the contents of the current client workspace. + + + Apply a previously created label to the specified view. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Name of the label to sync the specified or default view with. + + + + + Delete the view defined in the label, or matching the input view + from the label. The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Fetch a specific file from a Perforce depot without needing a clientspec + to map it. + + + + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + The depot or local filename (including optional path) of the file + to fetch. + + + + + The local filename to write the fetched file to. + + + + + This is an override used by the base class to get command specific args. + + + + + Move opened files between changelists or change the files’ type. + + + This task has two different but related uses: + Moving opened files between changelists (default or named). + Changing the type of an opened file. + + + + Move the specified files matching the view into the "New" changelist. + + + + ]]> + + + + + Modify the specified files matching the view to the given file type. + The change won't affect the repository until submitted. + + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + The client, branch or label view to operate upon. + + + + + Changelist to place the reopened files into. + + + + + File Type settings. + + + + + This is an override used by the base class to get command specific args. + + + + + Discard changes made to open files. + + + Revert all txt files in a given changelist. + + + ]]> + + + + + Revert all unchanged files opened in the given changelist. + + + + ]]> + + + + Revert all unchanged files opened in any changelist. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Changelist to perform the revert action on. optional. + + + + + Revert all unchanged or missing files from the changelist. default is false. optional. + + + + + This is an override used by the base class to get command specific args. + + + + + Set registry variables that perforce uses. + + + Note: the environment variables that p4 uses will be set, but will not + be validated. + + + Modify any of the three variables (at least one required). + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + This is an override used by the base class to get command specific args. + + + + + Send changes made to open files to the depot. + + + + Submit changelist "Temp", but first revert all unchanged files in the + changelist. + + + + ]]> + + + + Submit changelist, but leave the files open afterwards. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + + Changelist to submit. + + + + + Keep the files open after submitting. The default is + . + + + + + Revert all unchanged or missing files from the changelist. + The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Synchronize client space to a Perforce depot view. + + + + Sync to head using P4USER, P4PORT and P4CLIENT settings specified. + + + + ]]> + + + + Sync to head using default p4 environment variables. + + + ]]> + + + + Force a re-sync to head, refreshing all files. + + + ]]> + + + + Sync to a label. + + + ]]> + + + + + + Builds the command string for this particular command. + + + The command string for this particular command. + + + + Label to sync client to; optional. + + + + + Force a refresh of files. The default is . + + + + + This is an override used by the base class to get command specific args. + + + + + Static helper class for Perforce tasks. + + + + + ask p4 for the user name + + + + + + ask p4 for the client name + + + + + + Get a changelist number based on on its name + + + + + + + + + + Get a changelist number based on on its name + + + + + + + + + Create a new label + + + + + + + + Create a new Client + + + + + + + + + Create a new changelist + + + + Description of Changelist + + + + + call the p4 process to + + + + + + + call the p4 process to + + + + + + + Execute a process and return its ourput + + + + + + + + + Execute a process and return its ourput + + + + + + + + + + Execute a process by name + + + + + + + + + Used to add files to a Visual SourceSafe database. If the file is currently + in the SourceSafe database a message will be logged but files will continue to be added. + + + This version does not support recursive adds. Only adds in the root directory will be added to the + SourceSafe database. + + + + + + + + ]]> + + + + + The base abstract class for all Visual Source Safe Tasks. + Provides the core attributes, and functionality for opening an item + in a Visual Source Safe database. + + + + + Opens the Source Safe database and sets the reference to the specified + item and version. + + + + + Gets the value corresponding with the + specified . + + A . + + An representing the value + for the . + + + + + The path to the folder that contains "srcsafe.ini". + + + + + The Visual SourceSafe project or file path you wish the perform the + action on (starting with "$/"). + + + + + The password to use to login to the SourceSafe database. + + + + + The name of the user needed to access the Visual SourceSafe database. + When no is specified and "Use network + name for automatic user log in" is enabled for the Visual SourceSafe + database, then the current Windows username will be used to log in. + + + + + The name of the user needed to access the Visual SourceSafe database. + When no is specified and "Use network + name for automatic user log in" is enabled, then the current + Windows username will be used to log in. + + + + + A version of the path to reference. Accepts multiple forms, + including the label, version number, or date of the version. + If omitted, the latest version is used. + + + + + Main task execution method + + + + + Create project hierarchy in vss + + + + + + + Places a comment on all files added into the SourceSafe repository. + + + + + List of files that should be added to SourceSafe. + + + + + Defines how the local timestamp of files retrieved from a SourceSafe + database should be set. + + + + + The timestamp of the local file is set to the current date and time. + + + + + The timestamp of the local file is set to the file's last + modification date and time. + + + + + The timestamp of the local file is set to the date and time that + the file was last checked in to the database. + + + + + Used to checkin files into Visual Source Safe. + + + Checkin all files from an absolute directory to a local sourcesafe database. + + ]]> + + + Checkin a file from a relative directory to a remote sourcesafe database. + + ]]> + + + + + The comment for the new version. + + + + + The path to the local working directory. + + + + + Determines whether to perform a recursive checkin. + The default is . + + + + + Determines whether to leave the file(s) as writable. + The default is . + + + + + Task used to checkout files from Visual Source Safe. + + + Checkout the latest files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + + + + + The path to the local working directory. + + + + + Determines whether to perform a recursive checkout. + The default is . + + + + + Determines whether to leave the file(s) as writable. + The default is . + + + + + Set the behavior for timestamps of local files. The default is + . + + + + + Used to delete or Destroy files or projects in Visual Source Safe. + + + Delete a project from a local sourcesafe database. + + ]]> + + + Delete a file from the remote sourcesafe database. + + ]]> + + + Destroy a project from a local sourcesafe database. + + ]]> + + + Destroy a file from the remote sourcesafe database. + + ]]> + + + + + Deletes the item unless is + then the item is destroyed. + + + + + Determines whether or not the item is Destroyed. + The default is . + + + + + Used to generate differences in a vss database. It will show all changes to a project + after the specified label. + + + This only shows differences between the current version and the version specified. + + + + ]]> + + + + + The value of the label to compare to. Required. + + + + + The output file to generate (xml) + + + + + Used to retrieve an item or project from a Visual Source Safe database. + + + Get the latest files from a local sourcesafe database. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Remove any deleted files from local image. + + ]]> + + + + + Checks to see if we should remove local copies of deleted files, and starts + the scan. + + + + + Scans the Project Item for deleted files and removes their local + copies from the local image of the project. Obeys the recursive setting + (and thus optionally calls itself recursively). + + The VSS Item (project) to check for deletions + The path to the folder of the item being processed + + + + The path to the local working directory. + + + + + Determines whether to perform the get recursively. + The default is . + + + + + Determines whether to replace writable files. + The default is . + + + + + Determines whether the files will be writable. + The default is . + + + + + If refers to a project, determines whether files + marked "deleted" in the repository will be removed from the local + copy. The default is . + + + + + Determines whether the timestamp on the local copy + will be the modification time (if false or omitted, + the checkout time will be used) + + + + + Set the behavior for timestamps of local files. The default is + . + + + + + Generates an XML file showing all changes made to a Visual SourceSafe + project/file between specified labels or dates (by a given user). + + + + Write all changes between "Release1" and "Release2" to XML file + "changelog.xml". + + + + ]]> + + + + + Write all changes between January 1st 2004 and March 31st 2004 to XML + file "history.xml". + + + + ]]> + + + + + + The value of the label to start comparing to. If it is not included, + the compare will start with the very first history item. + + + + + The value of the label to compare up to. If it is not included, + the compare will end with the last history item. + + + + + Start date for comparison. + + + + + End date for comparison. + + + + + Output file to save history to (as XML). + + + + + Determines whether to perform the comparison recursively. + The default is . + + + + + Name of the user whose changes you want to see. + + + + + Gets the flags that should be used to retrieve the history of + . + + + + + Override to avoid exposing the corresponding attribute to build + authors. + + + + + Override to avoid exposing the corresponding attribute to build + authors. + + + + + Used to apply a label to a Visual Source Safe item. + + + Label all files in a local sourcesafe database. (Automatically applies the label recursively) + + ]]> + + + Label a file in a remote sourcesafe database. + + ]]> + + + + + The label comment. + + + + + The name of the label. + + + + + Task is used to undo a checkout from SourceSafe + + + Undo a checkout of all of the files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + + + + + The path to the local working directory. This is required if you wish to + have your local file replaced with the latest version from SourceSafe. + + + + + Determines whether to perform a recursive undo of the checkout. + The default is . + + + + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + + + + + Base star team task. + + + + Common super class for all StarTeam tasks. At this level of the hierarchy we are concerned only with obtaining a + connection to the StarTeam server. The subclass , abstracts tree-walking + behavior common to many subtasks. + + This class ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html + You need to have the StarTeam SDK installed for StarTeam tasks to function correctly. + + + Jason Yip + Steve Cohen + + + The username of the connection + + + The username of the connection + + + name of Starteam server to connect to + + + port of Starteam server to connect to + + + name of Starteam project to connect to + + + name of Starteam view to connect to + + + The starteam server through which all activities will be done. + + + + Derived classes must override this method to instantiate a view configured appropriately to its task. + + the unconfigured View + the view appropriately configured. + + + + All tasks will call on this method to connect to StarTeam and open the view for processing. + + the a view to be used for processing. + + + + Returns the name of the user or a blank string if the user is not found. + a user's ID + the name of the user + + + + Name of StarTeamServer. + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + Port number of the StarTeam connection. + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + The name of the StarTeam project to be acted on + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + The name of the StarTeam view to be acted on. + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + The StarTeam user name used for login. + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + The password used for login. + + + Required if is not set. If you wish to set all + connection parameters at once set . + + + + + One stop to set all parameters needed to connect to a StarTeam server. + + + If you do not wish to specify a url you can set each parameter individually. + You must set all connection parameters for the task to be able to connect to the StarTeam server. + + + Here is how to configure the url string. + servername:portnum/project/view + You can optionally specify a username and password. + username:password@servername:portnum/project/view + + + + + + + + + + The name of the label to be set in Starteam. + + + The label description to be set in Starteam. + + + Is the label being created a build label. + + + If set the datetime to set the label as of. + + + Kludgy flag to keep track if date has been set. + Please kill this if you can. Here based on experiences I have had with VB.NET + + + Does user wish to make a revision label? + + + + Override of base-class abstract function creates an appropriately configured view. + For labels this a view configured as of this.lastBuild. + + the unconfigured View + the snapshot View appropriately configured. + + + + The name to be given to the label; required. + + + + Should label be marked build : default is true + + + + Should label created be a revision label. The default is + . + + + has no effect if this is set to + as revision labels cannot have a build status. + + + + Optional description of the label to be stored in the StarTeam project. + + + + Optional: If this property is set the label will be created as of the datetime specified. + Please provide a datetime format that can be parsed via + . + + + This property is ignored when set to + . + + + + + Task for supporting labeling of repositories with incremented version + numbers. The version number calculated will be concatenated to the + . + + + + Instruments root of repository with versionnumber.xml file. + + + If this file is not present, it is created and checked into StarTeam. + The default version number is 1.0.0. By default the build number is + incremented. Properties are present to allow setting and incrementing + of major, minor, and build versions. + + + When label is created, properties are set to expose version information + and the new label : + + + + label + + + Version.text + + + Version.major + + + Version.minor + + + Version.build + + + + Incrementing or setting major or minor versions does NOT reset the + build version. + + + + Increment the build version. + + + ]]> + + + + Set the major version. + + + ]]> + + + + Increment the minor version. + + + ]]> + + + + Example versionnumber.xml file. + + + + + + ]]> + + + + + + Looks for versionnumber.xml at root of repository. + Updates the xml in this file to correspond with properties set by user and checks in changes. + A label is then created based on properties set. + + + Default behavior is to number. + If user sets , , or no incrementing is done + and the exact version set and/or read from versionnumber.xml is used. + The title of the Label is the property concatenated with the version number Major.Minor.Build + + + + + Locate the versionnumber.xml file in the repository. If it + is not present, the file is created. The file is checked out + exclusively for editing. + + StarTeam view we are working with. + + StarTeam file handle containing version xml. + + + + + Creates the versionumber.xml file in the repository. + + StarTeam folder desired to put the versionnumber.xml files into + StarTeam File handle to the created file. + + + + Allows user to specify the filename where the version xml is stored. + The default is versionnumber.xml. + + + + + Increment major version number. The default is . + If is set, this property is ignored. + + + + + Increment minor version number. The default is . + If is set, this property is ignored. + + + + + Increment build version number. The default is . + If is set, this property is ignored. + + + + + Major version number used for label. If this value is set, + is ignored. + + + + + Minor version number used for label. If this value is set, + is ignored. + + + + + Build version number used for label. + If this value is set. is ignored. + + + + + Task to check in files to StarTeam repositories. + + + You add files to the repository that are not controlled by setting . + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stcheckin + You need to have the StarTeam SDK installed for this task to function correctly. + + + Recursively checks in all files in the project. + + + + + ]]> + + + + + + Base for tree based star team tasks. + + + + Abstracts tree-walking behavior common to many subtasks. + + + This class provides tree iteration functionality. Derived classes will implement their specific task + functionally using the visitor pattern, specifically by implementing the method + + This class ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html + You need to have the StarTeam SDK installed for StarTeam tasks to function correctly. + + + + + Does the work of opening the supplied Starteam view and calling + the method setting the pattern in motion to perform the task. + + + + + Helper method calls on the StarTeam API to retrieve an ID number for the specified view, corresponding to this.label. + + The Label identifier or -1 if no label was provided. + + + Derived classes must override this class to define actual processing to be performed on each folder in the tree defined for the task + the StarTeam folderto be visited + the local mapping of rootStarteamFolder + + + + Derived classes must override this method to define tests for any preconditons required by the task. + This method is called at the beginning of the ExecuteTask method. + + + + + + Gets the collection of the local file names in the supplied directory. + We need to check this collection against what we find in Starteam to + understand what we need to do in order to synch with the repository. + + + The goal is to keep track of which local files are not controlled by StarTeam. + + Local folder to scan + hashtable whose keys represent a file or directory in localFolder. + + + + Removes file being worked with from the generated hashtable. + + + The goal is to keep track of which local files are not controlled by StarTeam. + + Hashtable of the current directory's file|dire + file to remove from list. + + + + Evaluates defined and patterns against a filename. + + + + + + + Lifted/Modified from to convert patterns to match filenames to regularexpressions. + + Search pattern - meant to be just a filename with no path info + The directory seperation code in here most likely is overkill. + Regular expresssion for searching matching file names + + + + Convert path patterns to regularexpression patterns. Stored in the given string collection. + + collection of paths to expand into regular expressions + collection to store the given regularexpression patterns + + + + Root StarTeam folder to begin operations on. Defaults to the root of the view. + + + + + Root Local folder where files are to be checkout/in or manipulated. Defaults to the StarTeam default folder. + + + + + Accepts comma de-limited list of expressions to include in tree operations. + If nothing is set ALL filespecs are included. + + + Match all C# files in the directory + *.cs + + + Expressions should be just for filename matching. + Technically relative directory information is accepted but will never match. + + + + + Accepts comma de-limited list of expressions to exclude from tree operations. + If nothing is specified. NO filespecs are excluded. + + + Match No C# files in the directory + *.cs + + + + If a excludes pattern is set with no patterns present includes defaults to "*" + + Expressions should be just for filename matching. + Technically relative directory information is accepted but will never match. + + + + + Default : true - should tasks recurse through tree. + + + + + Default : false - force check in/out actions regardless of the status that StarTeam is maintaining for the file. + + + If is set then this property should be set true. + Otherwise the checkout will be based on how the repository compares to local target folder. + + Note that if forced is not on. Files with status Modified and Merge will not be processed. + + + + + Label used for checkout. If no label is set latest state of repository is checked out. + + + The label must exist in starteam or an exception will be thrown. + + + + classes used to access static values + + + Facotry classes used when files and folders are added to the repository. Populated when adduncontrolled is enabled. + + + will folders be created for new items found with the checkin. + + + The comment which will be stored with the checkin. + + + holder for the add Uncontrolled attribute. If true, all local files not in StarTeam will be added to the repository. + + + This attribute tells whether unlocked files on checkin (so that other users may access them) checkout or to + leave the checkout status alone (default). + + + + + Override of base-class abstract function creates an appropriately configured view. For checkins this is + always the current or "tip" view. + + the unconfigured View + the snapshot View appropriately configured. + + + Implements base-class abstract function to define tests for any preconditons required by the task + + + Implements base-class abstract function to perform the checkin operation on the files in each folder of the tree. + the StarTeam folder to which files will be checked in + local folder from which files will be checked in + + + Adds to the StarTeam repository everything on the local machine that is not currently in the repository. + Hasttable containing files missing in the repository for the current folder + StarTeam folder to which these items are to be added. + + + Adds the file or directpry to the repository. + StarTeam folder underwhich items will be added. + the file or directory to add + true if the file was successfully added otherwise false. + + + + if true, any files or folders NOT in StarTeam will be added to the repository. Defaults to "false". + + + + + Set to do an unlocked checkout; optional, default is false; + If true, file will be unlocked so that other users may change it. If false, lock status will not change. + + + + + Task to check out files from StarTeam repositories. + + + You can check out by and control the type of lock with . + You can delete files that are not in source control by setting . + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stcheckout + You need to have the StarTeam SDK installed for this task to function correctly. + + + Recursively checks out all files in the project with an exclusive lock. + + + + + ]]> + + + + + holder for the createDirs property. + + + holder for the deleteUncontrolled property. + + + holder for the lockstatus property. + + + + Override of base-class abstract function creates an appropriately configured view for checkout. + If a label is specified it is used otherwise the current view of the repository is used. + + the unconfigured StarTeam View + the snapshot StarTeam View appropriately configured. + + + Implements base-class abstract function to define tests for any preconditons required by the task + + + + Implements base-class abstract function to perform the checkout operation on the files in each folder of the tree. + + the StarTeam folder from which files to be checked out + the local mapping of the starteam folder + + + + Deletes everything on the local machine that is not in the repository. + + Hashtable containing filenames to be deleted + + + Utility method to delete the file (and it's children) from the local drive. + the file or directory to delete. + was the file successfully deleted + + + + Default : true - Create directories that are in the Starteam repository even if they are empty. + + + + + Not fully tested CAREFUL Default : false - Should all local files NOT in StarTeam be deleted? + + + + + What type of lock to apply to files checked out. + + + LockType + + + unchanged + default: do not make any changes to the lock state of items. + + + exclusive + Exclusively lock items. No other users can update the object while it is exclusively locked. + + + nonexclusive + Put a non-exclusive lock on the item. + + + unlocked + Remove locks from all items checked out. This accompanied by force would effectively override a lock and replace local contents with the current version. + + + + + + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + + + + + This method does the work of creating the new view and checking it + into Starteam. + + + + + List items in StarTeam repositories. + + + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlist + You need to have the StarTeam SDK installed for this task to function correctly. + + + Lists all files in a StarTeam repository. + + + + + ]]> + + + + + + Override of base-class abstract function creates an appropriately configured view for checkoutlists. + The current view or a view of the label specified . + + the unconfigured View + the snapshot View appropriately configured. + + + Required base-class abstract function implementation is a no-op here. + + + Implements base-class abstract function to perform the checkout + operation on the files in each folder of the tree. + the StarTeam folder from which files to be checked out + the local mapping of rootStarteamFolder + + + + Processes Surround SCM batch files. + + + Processes the batch commands found in the input file. Each line in the + input file should contain a single Surround SCM command including proper + command line options. The sscm command, Surround SCM server address, + port number, username and password are not required for each command line. + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is directed to the console. + + + <sscmbatch + serverconnect="localhost:4900" + serverlogin="administrator:" + input="${src}/sscm.batch" + /> + + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is redirected to ${dist}/sscm.batch.out. + + + <sscmbatch + serverconnect="localhost:4900" + serverconnect="administrator:" + input="${src}/sscm.batch" + output="${dist}/sscm.batch.out" + /> + + + + + + Surround SCM + abstract task base. + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + The address and port number of the Surround SCM server host computer. + Format is server:port. If not entered, the last saved connection + parameters are used. + + + + + The username and password used to login to the Surround SCM server. + Format is username:password. If not entered, the last saved login + parameters are used. + + + + + Override ExeName paramater to sscm.exe for Surround SCM. + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + File to read commands from. + + + + + File to direct all standard output to. When executing commands from + the input file, all output is written to this file instead of being + displayed on the screen. + + + + + Creates new branches for Surround SCM. + + + + Create a new Baseline branch 'Widget 1.0' from branch 'Mainline', + repository 'Mainline/Widget' with the given comments. All files + are branched at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + parent="Mainline" + comment="Branch for continuing Widget 1.0 development" + type="baseline" + /> + + + + + Create a new Workspace branch 'MyWidgetDevelopment' from branch + 'Widget 1.0', repository 'Mainline/Widget'. All files are branched + at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="MyWidgetDevelopment" + repository="Mainline/Widget" + parent="Widget 1.0" + /> + + + + + Create a new Snapshot branch 'Build as of 12-1-03' from branch + 'Widget 1.0', repository 'Mainline/Widget' with the given comments. + All files are branched at their version as of 12-01-03. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + name="Build as of 12-1-03" + repository="Mainline/Widget" + branch="Widget 1.0" + comment="Snapshot of source as it was on December 1st, 2003" + timestamp="2003120300:00:00" + type="snapshot" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + The name of the branch you want to create. + + + + + The full repository path. + + + + + The parent branch you want to create the new, child branch from. + If not specified, the mainline branch is used. + + + + + Specifies a comment for the branch operation. + + + + + Specifies which parent branch file versions are copied into the + child branch. + + + + + Specifies which parent branch file versions are copied into the + child branch. Format is yyyymmddhh:mm:ss. If + attribute is specified, this parameter is ignored. + + + + + Include removed files when creating a branch with the + or option. + The default is . + + + + + Specifies the type of branch you want to create. Possible values are + workspace, baseline, or snapshot. The default is + workspace. + + + + + Checks in files in Surround SCM + repository. + + + Check in updated Surround SCM files with changes, removes the lock on + the files, and makes changes available to other users. + + + + Check In all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call outputs the progress of the Check In + to the console. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + comment="I made some changes" + /> + + + + + Check in file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' + branch from the working directory setup for user 'administrator' + with comment 'I made some changes'. Set the 'Release 1.1.1' label + to this new version, even if the label already exists on an earlier + version. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + comment="I made some changes" + label="Release 1.1.1" + overwritelabel="true" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. The default is pulled from the local + working directory. + + + + + Surround SCM repository path. The default is pulled from the local + working directory. + + + + + File or repository name. Can be / or empty, which means the + repository specified by the repository option or the default + repository. + + + + + Comment for the check-in. + + + + + Force check in without merge. Ignores code changes checked in after + the user's last checkout or merge. The default is . + + + + + Get file after check in. The default is . + + + + + Keep the lock after check in. The default is . + + + + + A label for the check in code. + + + + + Overwrite previous label on file. The default is + . + + + + + Do not list repository and local full path of the Surround + SCM server. The default is . + + + + + Recursively check in all files and sub-repositories. + The default is . + + + + + The TestTrack Pro database configuration name. + + + + + The TestTrack Pro username and password. + + + + + The TestTrack Pro defect number(s) for attachment. Format is "#:#:#:#". + + + + + Make file writable after check in. The default is + . + + + + + Update version even if no changes. The default is + . + + + + + Remove local file after check in. The default is + . + + + + + Checks out files from a Surround SCM + repository. + + + You can check out single files, multiple files, or a full repository. + Surround SCM creates a read-write copy of the files in the working + directory. + + + + Check Out all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call forces the file retrieval from the + server even if the local file is current and overwrites any writable + local files with the server copy. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + comment="This is my Check Out comment" + /> + + + + + Check Out version 1 of the file 'Mainline/Widget/Widget.java' exclusively + from the 'Widget 1.0' branch to the working directory setup for user + 'administrator'. Writable local files are not overwritten, even if they + are out of date. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + exclusive="true" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. The default is pulled from the local + working directory. + + + + + Surround SCM repository path. The default is pulled from the local + working directory. + + + + + File or repository name. Can be / or empty, which means the + repository specified by the attribute + or the default repository. + + + + + Comment for the check-out. + + + + + Force file retrieval from server regardless of the local copy status. + The default is . + + + + + Do not list repository and local full path of the Surround SCM server. + The default is . + + + + + Recursively get files and sub-repositories. The default is + . + + + + + Specifies whether to overwrite local writable files. The default is + . + + + + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + + + + + Exclusively lock the files. The default is . + + + + + Specifies the file version to check out. Ignored if no specific + filename is set using the attribute. + + + + + Freezes branches in a Surround SCM + repository. + + + Freezing a branch prevents any code changes being made to files in the + branch. When a branch is frozen, it is locked and no changes can be + made to it. + + + + Freeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. + + + + + Surround SCM mainline branch name. The default is pulled from the + local working directory. + + + + + Gets files from a Surround SCM + repository. + + + You can get a single file, multiple files, or a repository. A read-only + copy of the file is created in the specified directory. + + + + Get all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory + setup for user 'administrator'. This call forces the file retrieval + from the server even if the local file is current and overwrites any + local files that are writable with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + overwrite="true" + /> + + + + + Get version 1 of the file 'Mainline/Widget/Widget.java' from the + 'Widget 1.0' branch to the working directory setup for user 'administrator'. + Writable local files are not overwritten, even if they are out of date. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + /> + + + + + Get all files and repositories labeled with 'Release 1.0.0' (even those + removed from Surround) from repository 'Mainline/Widget' recursively + from the 'Widget 1.0' branch to the '${build}/src' directory. Writable + local files are overwritten with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + label="Release 1.0.1" + destdir="${build}/src" + overwrite="true" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. The default is pulled from the local + working directory. + + + + + Surround SCM repository path. The default is pulled from the local + working directory. + + + + + File or repository name. Can be / or empty, which means the repository + specified by the attribute or the default + repository. + + + + + The local directory you want to get the files to. If + is a repository, a subrepository with the same + name as the repository is created and files are copied to it. If + is specified as / or not set, files are copied to + the local directory. If not specified, files are copied to the + working directory. + + + + + Make local file editable or writable. The default is + . + + + + + Force file retrieval from server regardless of the local copy status. + The default is . + + + + + Label to search for when getting a file. If a file version is + specified, this parameter is ignored. + + + + + Timestamp to use when getting files. Format is yyyymmddhh:mm:ss. + If is specified, this parameter is ignored. + Requires Surround SCM 3.0 or later. + + + + + Include removed files when getting files by label or timestamp. + The default is . Ignored if a label or + timestamp is not specified. + + + + + Do not list repository and local full path of files. The default is + . + + + + + Recursively get files and sub-repositories. The default is + . + + + + + Specifies whether to overwrite local writable files. The default is + . + + + + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + + + + + The file version to get. Ignored if a filename is not specified in + the attribute. + + + + + Creates file or repository labels for a Surround SCM + repository. + + + Labels provide a way to mark a specific version of a file or repository. + You can create labels for single files, multiple files, or all files in + a repository. When you create a label, a new entry is created in the history. + The file, and the version number, do not change. Existing 'Release 1.0.1' + labels on a file will be moved to the tip version of the file. + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + overwritelabel="false" + comment="This labels the final build for the release of Widget 1.0.1." + /> + + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and no comments. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + /> + + + + + Label version 4 of the file 'Mainline/Widget/Widget.java' in the + 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An + existing 'Release 1.0.1' label on this file to be moved to version 4 + of the file. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + label="Release 1.0.1" + overwritelabel=" true" + comment=" This labels the final build for the release of Widget 1.0.1." + version=" 4" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. The default is pulled from the local + working directory. + + + + + Surround SCM repository path. The default is pulled from the local + working directory. + + + + + File or repository name. Can be / or empty, which means the + repository specified by the attribute + or the default repository. + + + + + The new label to create. + + + + + Recursively label all files. The default is . + + + + + Overwrite the existing label. The default is . + + + + + Comment for the label. + + + + + The file version to label. Ignored if a filename is not specified in + the attribute. + + + + + Unlocks frozen branches for a Surround SCM + repository. + + + + Unfreeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmunfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + + + + + Writes the task-specific arguments to the specified + . + + The to write the task-specific arguments to. + + + + Surround SCM branch name. + + + + + Surround SCM mainline branch name. The default is pulled from the local working directory. + + + + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + + + + + An environment variable that holds path information about where + svn is located. + + + + + The prefix used for command arguments. + + + + + The name of the svn executable. + + + + + Environment variable that holds the executable name that is used for + ssh communication. + + + + + Name of the password file that is used to cash password settings. + + + + + Initializes a new instance of the + class. + + + + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. + + + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + + + + + Gets the full path of the svn executable. + + + Exception is thrown when Subversion client + executable cannot be found. + + + The full path of the svn executable. + + + + + Set default values for non-requiered parameters. + + + + + The name of the executable. + + + + + The name of the password file. + + + + + Name of the home environment variable. + + + + + The name of the ssh/ rsh environment variable. + + + + + The full path of the svn executable. + + + + + + TODO: Add more documentation when I understand all svn root possibilities/ + protocols. + The svn root is usually in the form of a URL from which the server, protocol + and path information can be derived. Although the path to the repository + can also be determined from this the information is more implicit + than explicit. For example a subversion root URL of: + + http://svn.collab.net/repos/svn/trunk/doc/book/tools + + would have the following components: + protocol: http/ web_dav + username: anonymous + servername: svn.collab.net + repository: /repos/svn + server path: /trunk/doc/book/tools + + In addition the revision path or branch can also be determined as + subversion stores this information as a seperate physical directory. + In this example: + + revision: trunk + + + + + + The user performing the checkout. + + + + + The pasword to use to login to svn. + + + + + Indicates whether the task should be interactive or not. This is + set to by default, and I don't see a reason + to expose this to the NAnt task. + + + + + The executable to use for ssh communication. + + + + + The command to execute. + + + + + Specifies whether to print as little information as possible. + The default is . + + + + + Determines if the root is used for the command based on + the command name. Returns true if the root + is used, otherwise returns false. + + + + + Executes the svn checkout command. + + + Checkout Gentle.NET. + + + ]]> + + + + + + Initialize the task, and set the default parameters. + + + + + Gets the svn command to execute. + + + The svn command to execute. The default value is "checkout". + + + + + if the command should be executed recursively. + The default is . + + + + + The revision to checkout. If no revision is specified then subversion + will return the HEAD. + + + A revision argument can be one of: + NUMBER revision number + "{" DATE "}" revision at start of the date + "HEAD" latest in repository + "BASE" base rev of item's working copy + "COMMITTED" last commit at or before BASE + "PREV" revision just before COMMITTED + + + + + if the authentiction token should be cached + locally. + + + + + The location of the configuration directory. + + + + + Executes the svn command specified by the command attribute. + + + Checkout Gentle.NET. + + + ]]> + + + + + + The svn command to execute. + + + + + Executes the svn update specified by the command attribute. + + + Update Gentle.NET. + + + ]]> + + + + + + Gets the svn command to execute. + + + The svn command to execute. The default value is "update". + + + + + Allows an IIS application pool to be controlled. + + + + Starts the "StsAdminAppPool" application pool on server + "SV-ARD-WEB". + + + + ]]> + + + + + Stops and restarts the "DefaultAppPool" application pool + on server "SV-ARD-WEB". + + + + ]]> + + + + + + The name of the server on which to perform the action. The default + is the local computer. + + + + + The name of the application pool on which to perform the action. + + + + + The action that should be performed on the application pool. + + + + + Defines the actions that can be performed on an application pool. + + + + + Starts the application pool. + + + + + Stops the application pool. + + + + + Stops and restarts the application pool. + + + + + Recycles an application pool. + + + + + Creates or modifies a virtual directory of a web site hosted on Internet + Information Server. + + + + If the virtual directory does not exist it is created, and if it already + exists it is modified. Only the IIS-properties specified will be set. If set + by other means (e.g. the Management Console), the unspecified properties retain their current value, + otherwise they are inherited from the parent. + + + For a list of optional parameters see IIsWebVirtualDir. + + + More information on metabase parameters is available here. + + + + + Create a virtual directory named Temp pointing to c:\temp + on the local machine. + + + + ]]> + + + + + Create a virtual directory named Temp pointing to c:\temp + on machine Staging. + + + + ]]> + + + + + Configure the home directory of for http://svc.here.dev/ to point to + D:\Develop\Here and require authentication + + + + ]]> + + + + + Create a virtual directory named WebServices/Dev pointing to + c:\MyProject\dev on the web site running on port 81 of + machine MyHost. + + + + ]]> + + Note that if WebServices is neither an existing virtual directory nor an + existing physical subdirectory of the web root, your IIS Management Console + will get confused. Even though http://MyHost:81/WebServices/Dev/theService.asmx + may be a perfectly working webservice, the Management Console will not show it. + + + + + Base class for all IIS-related task. + + + Basically this class hold the logic to determine the IIS version as well + as the IIS server/port determination/checking logic. + + + + + Name of the IIS virtual directory. + + + + + The IIS server, which can be specified using the format [host]:[port]. + The default is localhost:80. + + + + This allows for targeting a specific virtual site on a physical box. + + + + + + The website on the IIS server. + + + + This allows for targeting a specific virtual site on a physical box. + + + + + + Gets the version of IIS corresponding with the current OS. + + + The version of IIS corresponding with the current OS. + + + + + Defines the IIS versions supported by the IIS tasks. + + + + + The user-friendly name of the package or application. + + + + + The file system path. + + + + + Indicates whether the file or the contents of the folder may be + executed, regardless of file type. The default is . + + + + + Indicates whether remote requests to execute applications are denied; + only requests from the same computer as the IIS server succeed if + is set to . You + cannot set to + to enable remote requests, and set to + to disable local requests. The default is + . + + + + + Indicates whether remote requests to view files are denied; + only requests from the same computer as the IIS server succeed if + is set to . You + cannot set to + to enable remote requests, and set to + to disable local requests. The default is + . + + + + + A value of true indicates that remote requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + + + + + indicates that remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + + + + + Indicates whether the file or the contents of the folder may be + read. The default is . + + + + + Indicates whether users are allowed to access source code if either + Read or Write permissions are set. The default is . + + + + + Indicates whether the file or the contents of the folder may be + executed if they are script files or static content. The default + is . + + + + + Indicates whether file access requires SSL file permission processing, + with or without a client certificate. The default is . + + + + + Indicates whether file access requires SSL file permission processing + with a minimum key size of 128 bits, with or without a client + certificate. The default is . + + + + + Indicates whether SSL file permission processing maps a client + certificate to a Microsoft Windows ® operating system user-account. + must also be set to + for the mapping to occur. The default is + . + + + + + Indicates whether SSL file access processing requests a certificate + from the client. The default is . + + + + + Indicates whether SSL file access processing requests a certificate + from the client. If the client provides no certificate, the connection + is closed. must also be set to + when using . + The default is . + + + + + Indicates whether users are allowed to upload files and their + associated properties to the enabled directory on your server or + to change content in a Write-enabled file. The default is + . + + + + + Indicates whether IIS should handle the user password for anonymous + users attempting to access resources. The default is + . + + + + + Specifies what type of application to create for this virtual directory. + The default is . + + + + + Specifies whether ASP client-side debugging is enabled. The default + is . + + + + + Specifies whether ASP debugging is enabled on the server. The default + is . + + + + + Specifies the application pool where the application is routed + (IIS 6.0 or higher). + + + + + Enables session state persistence for the ASP application. The + default is . + + + + + Specifies whether output from an ASP application will be buffered. + If , all output from the application is + collected in the buffer before the buffer is flushed to the client. + With buffering on, the ASP application has to completely process the + ASP script before the client receives any output. The default is + . + + + + + Determines whether an ASP application can be automatically restarted. + When changes are made to Global.asa or metabase properties that affect + an application, the application will not restart unless the + property is set to + . The default is . + + + When this property is changed from to + , the application immediately restarts. + + + + + Controls the behavior of ASP when a new request is to be rejected + due to a full request queue. If , an .htm file + with a similar name as the requested .asp file, will be sent instead + of the .asp file. The naming convention for the .htm file is the + name of the .asp file with _asp appended. The default is + . + + + + + Specifies whether HTTP 1.1 chunked transfer encoding is enabled for + the World Wide Web Publishing Service (WWW service). The default is + . + + + + + Specifies which ASP errors are written to the Windows event log. + + + + ASP errors are written to the client browser and to the IIS log files + by default. is set to + by default, and is modified by in + the following way: + + + If is set to , + then ASP errors are not written to the Windows event log, regardless + of the value of . + + + If is set to , + and if IIS fails to write an item to the IIS log file, the item is + written to the Windows event log as a warning, regardless of the + value of . + + + If is set to + and is set to , + then only the most serious ASP errors are sent to the Windows event log. + Serious ASP error numbers are: 100, 101, 102, 103, 104, 105, 106, 107, + 115, 190, 191, 192, 193, 194, 240, 241, and 242. + + + If is set to + and is set to , + then all ASP errors are written to the Windows event log. + + + + + + Specifies whether an ASP page allows paths relative to the current + directory. The default is . + + + + + Specifies whether type libraries are cached on the server. The + default is . + + + + The World Wide Web Publishing Service (WWW service) setting for + this property is applicable to all in-process and pooled out-of-process + application nodes, at all levels. + + + Metabase settings at the Web server level or lower are ignored + for in-process and pooled out-of-process applications. However, + settings at the Web server level or lower are used if that node + is an isolated out-of-process application. + + + + + + Specifies whether ASP pages trap exceptions thrown by components. + If set to , the Microsoft Script Debugger tool + does not catch exceptions sent by the component that you are debugging. + The default is . + + + + + Controls whether the Web server writes ASP errors to the application + section of the Windows event log. The default is . + + + + ASP errors are written to the client browser and to the IIS log files + by default. is set to + by default, and is modified by in + the following way: + + + If is set to , + then ASP errors are not written to the Windows event log, regardless + of the value of . + + + If is set to , + and if IIS fails to write an item to the IIS log file, the item is + written to the Windows event log as a warning, regardless of the + value of . + + + If is set to + and is set to , + then only the most serious ASP errors are sent to the Windows event log. + Serious ASP error numbers are: 100, 101, 102, 103, 104, 105, 106, 107, + 115, 190, 191, 192, 193, 194, 240, 241, and 242. + + + If is set to + and is set to , + then all ASP errors are written to the Windows event log. + + + + + + Specifies whether the Web server writes debugging specifics + (file name, error, line number, description) to the client browser, + in addition to logging them to the Windows Event Log. The default + is . + + + + + Indicates whether IIS thread gating is enabled (only applies to IIS 4 and 5). + The default is . + + + IIS performs thread gating to dynamically control the number of + concurrently executing threads, in response to varying load conditions. + + + + + Specifies whether IIS checks the threading model of any components + that your application creates. The default is . + + + + + Specifies Anonymous authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + + + + + Specifies Basic authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + + + + + Specifies Integrated Windows authentication as one of the possible + authentication schemes returned to clients as being available. The + default is . + + + + + Specifies that authentication persists only for a single request on + a connection. IIS resets the authentication at the end of each request, + and forces re-authentication on the next request of the session. + + + [IIS 6.0] When the AuthPersistSingleRequest flag is set to true when + using NTLM authentication, IIS 6.0 automatically reauthenticates every + request, even those on the same connection. + + + + + Specifies authentication will persist only across single requests + on a connection if the connection is by proxy. Applies to IIS 5.0 + and 5.1. The default is + + + IIS will reset the authentication at the end of the request if the current authenticated + request is by proxy and it is not the special case where IIS is running MSPROXY + + + + + Specifies whether authentication is valid for a single request + if by proxy. IIS will reset the authentication at the end of the + request and force re-authentication on the next request if the + current authenticated request is by proxy of any type. Applies to + IIS 5.0 and 5.1. The default is . + + + + + Specifies whether the HTTP 1.1 directive to prevent caching of content + should be sent to clients. The default is . + + + + + Indicates whether ISAPI extensions are cached in memory after first + use. The default is . + + + + + Specifies whether the installed content indexer should index content + under this directory tree. The default is . + + + + + Specifies whether process accounting and throttling should be performed + for ISAPI extensions and ASP applications. The default is + . + + + + + Indicates whether IIS should perform process accounting for CGI + applications. The default is . + + + + + Indicates whether a CGI application runs in its own console. The + default is . + + + + + Specifies whether a CGI process is created in the system context + or in the context of the requesting user. The default is + . + + + + + Specifies whether date information is displayed when browsing + directories. The default is . + + + + + Specifies whether file extensions are displayed when browsing + directories. The default is . + + + + + Specifies whether date information is displayed in extended format + when displaying directories. The default is . + + + + + Specifies whether file size information is displayed when displaying + directories. The default is . + + + + + Specifies whether file creation time is displayed when browsing + directories. The default is . + + + + + Specifies whether client requests are written to the IIS log files. + The default is . + + + + + When set to true, the default document (specified by the DefaultDoc property) for a directory is loaded when the directory is browsed. + + + + + Specifies whether directory browsing is enabled. The default is + . + + + + + Enables or disables custom footers. The default is + . + + + + + Enables or disables reverse Domain Name Server (DNS) lookups for + the World Wide Web Publishing Service (WWW service). The default is + . + + + + + Specifies whether server-side include (SSI) #exec directives are + disabled under this path. The default is . + + + + + + + + + + + + + + + One or more file names of default documents that will be returned to + the client if no file name is included in the client's request. + + + + + Specifies the user name for Universal Naming Convention (UNC) virtual + roots. + + + + + Specifies the encrypted password used to gain access to UNC + (Universal Naming Convention) virtual roots. + + + + + The different ways a (virtual) directory in IIS can be configured + as an application. + + + + + Virtual directory is not configured as an application. + + + + + Virtual directory is configured as an in-process application. + + + + + Virtual directory is configured as a pooled out-of-process + application. For IIS4 this is the same as . + + + + + Virtual directory is configured as an out-of-process application. + + + + + Deletes a virtual directory from a given web site hosted on Internet + Information Server. + + + + Delete a virtual directory named Temp from the web site running + on port 80 of the local machine. If more than one web site is + running on port 80, take the web site bound to the hostname + localhost if existent or bound to no hostname otherwise. + + + + ]]> + + + + + Delete a virtual directory named Temp from the website running + on port 81 of machine MyHost. + + + + ]]> + + + + + + Lists the configuration settings of a specified virtual directory in a + web site hosted on Internet Information Server. + + + + List the settings of a virtual directory named Temp. + + + + ]]> + + + + + + Base NAnt task for working with ADSI. This task contains only the path of the ADSI + object that you want to work with. + + + + + The ADSI path of the location where we want to work with. + + + + + Used to get the value of a property from an ADSI object. + + + + + Sets the specified property + + + + + The name of the property to get. + + + + + The name of the property to store the value in. + + + + + Sets a property on an ADSI object. + + + This task uses a heuristic to determine the type of the property in ADSI. The following cases are notable: + + If the property does not exist on the item, it is inserted as a string. + If the property already exists, this method will attempt to preserve + the type of the property. The types this method knows about are String, + Boolean, and Int32. + If the property exists and is an array, the value is added to + the array, but only if it is not already present. + + + + + + ]]> + + + + + + + + + ]]> + + + + + + Sets the specified property + + + + + Sets the named property on the specified + to the given value. + + The we're modifying. + The name of the property to set. + The value to set the property to. + + The following cases are notable: + + + If the property does not exist on the item, it is inserted as a + string. + + + If the property already exists, this method will attempt to preserve + the type of the property. The types this method knows about are + , , and . + + + If the property exists and is an array, the value is added to the + array, but only if it's not already present. + + + + + + + The name of the property to set. + + + + + The new value of the property. + + + + + Formats source code in a given directory to a specified code format. + + + + Most examples inline have been produced by Tal Davidson and team and + are part of the astyle documentation. They have been included in + the task documentation as an easy reference. + + NOTE: This task relies on the astyle.exe file being in your path variable. + Please download the astyle.exe from http://astyle.sourceforge.net. + + + + + + + + + ]]> + + + + + + The default style seems to be the closest to C# standards. + + + + + Build up the command line arguments, determine which executable is + being used and find the path to that executable and set the working + directory. + + The process to prepare. + + + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch of the option. + if the option should be appended to the commandline, otherwise . + + + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + + + + + Append the files specified in the fileset to the command line argument. + + + + + A collection of command line option switches. + + + + + Used to select the files to copy. + + + + + The command-line arguments for the program. + + + + + Indicate the preset style to use. + + ansi + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + kr ( Kernighan&Ritchie ) + + namespace foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + linux + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + gnu + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + java + + class foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + NAnt + + namespace foospace { + class foo() { + #region Protected Static Fields + private int Foo() { + if (isBar) { + bar(); + return 1; + } else { + return 0; + } + } + #endregion + } + + + + + + + + Astyle leaves the original files around, renamed with a different + suffix. Setting this to true + will remove these files. + + + + + The suffix to append to original files, defaults to .orig + if not specified. + + + + + Indicate the maximum number of spaces to indent relative to a + previous line. + + + + + Indicate that tabs should be used to indent sources. The number + specified indicates the maximum number of spaces the tab character + will represent. + + + + + Indent using tab characters. Treat each tab as # spaces. Uses tabs as + indents in areas '--indent=tab' prefers to use spaces, such as + inside multi-line statements. + + + + + to convert tabs to spaces. + + + + + if class statements should be indented. + + + The default: + + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + + becomes: + + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + + + + + + + if switch statements should be indented. + + + The default: + + switch (foo) + { + case 1: + a += 2; + break; + + default: + a += 2; + break; + } + + becomes: + + switch (foo) + { + case 1: + a += 2; + break; + + default: + a += 2; + break; + } + + + + + + + if case statements should be indented. + + + The default: + + switch (foo) + { + case 1: + { + a += 2; + break; + } + + default: + { + a += 2; + break; + } + } + + becomes: + + switch (foo) + { + case 1: + { + a += 2; + break; + } + + default: + { + a += 2; + break; + } + } + + + + + + + true if bracket statements should be indented. + + + The default: + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + becomes: + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + + + + + if block statements should be indented. + The default: + + if (isFoo) + { + bar(); + } + else + anotherBar(); + + becomes: + + if (isFoo) + { + bar(); + } + else + anotherBar(); + + + + + if namespace statements should be indented. + + + The default: + + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + + becomes: + + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + + + + + + + if label statements should be indented. + + + The default: + + int foospace() + { + while (isFoo) + { + ... + goto error; + + error: + ... + } + } + + becomes: + + int foospace() + { + while (isFoo) + { + ... + goto error; + + error: + ... + } + } + + + + + + + Indicate the maximum number of spaces to indent relative to a + previous line. + + + + + Indicate the maximum number of spaces to indent relative to a + previous line. + + + + + if empty lines should be filled with the + whitespace of the previous line. + + + + + if brackets should be put on a new line. + + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + + + + + if brackets should be attached. + + + if (isFoo){ + bar(); + } else { + anotherBar(); + } + + + + + + + if brackets should be put on a new line and + indented. + + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + + + + + if the line after a bracket (i.e. an else + statement after the closing if) should be placed on the next line. + + + if (isFoo){ + bar(); + }else { + anotherBar(); + } + + becomes: + + if (isFoo) { + bar(); + } + else { + anotherBar(); + } + + + + + + + to break block statements with an empty line. + + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + becomes: + + isFoo = true; + + if (isFoo) { + bar(); + } else { + anotherBar(); + } + + isBar = false; + + + + + + + to break all block statements, even on + nested ifs with an empty line. + + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + becomes: + + isFoo = true; + + if (isFoo) { + bar(); + + } else { + anotherBar(); + } + + isBar = false; + + + + + + + to put the if component of an else if on a + new line. + + + if (isFoo) { + bar(); + } else if (isBar()){ + anotherBar(); + } + + becomes: + + if (isFoo) { + bar(); + } else + if (isBar()){ + anotherBar(); + } + + + + + + + + to pad operators with a space. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if (isFoo) + a = bar((b - c) * a, *d--); + + + + + + + to pad parenthesis with a space. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if ( isFoo ) + a = bar( ( b-c )*a, *d-- ); + + + + + + + to pad operators and parenthesis. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if ( isFoo ) + a = bar( ( b - c ) * a, *d-- ); + + + + + + + to keep complex statements on the same line. + + + if (isFoo) + { + isFoo = false; cout << isFoo << endl; + } + + remains as is. + + if (isFoo) DoBar(); + + remains as is. + + + + + + + to keep single line statements on the same line. + + + if (isFoo) + { isFoo = false; cout << isFoo << endl; } + + remains as is. + + + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Register COM servers or type libraries. + + + + COM register task will try and register any type of COM related file + that needs registering. + + Executable files (.exe) will be registered as exe servers, type + libaries (.tlb) registered with RegisterTypeLib and for all other + filetypes it will attempt to register them as dll servers. + + + + Register a single dll server. + + + ]]> + + + + Register a single exe server + + + ]]> + + + + Register a set of COM files at once. + + + + + + + + + + ]]> + + + + + + Register an inproc COM server, usually a .dll or .ocx + + + + + + Register a COM type library + + + + + + Register exe servers. + + + + + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + + + + Unregistering this time. ( /u paramater )Default is "false". + + + + The set of files to register. + + + + + Helper class to synamically build an assembly with the correct + P/Invoke signature + + + + + Register a given dll. + + + + + + + + Changes the current working directory. + + + + Changes the current working directory to the "subdir" + directory, relative to the project base directory. + + + + ]]> + + + + + + Changes the current directory. + + + + + The path to which the current working directory should be set. + + + + + Calculates checksums for a set of files. + Loosely based on Ant's Checksum task. + + + This task takes a set of input files in a fileset + and calculates a checksum for each one of them. + You can specify the algorithm to use when calculating + the checksum value (MD5 or SHA1, for example). + The calculated value is saved to a file with the same + name as the input file and an added extension either + based on the algorithm name (e.g. .MD5), or whatever + is specified through the fileext attribute. + + + + + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + + This is where the work is done + + + + + Writes a checksum to a destination file + + + + + + + Name of Algorithm to use when calculating + the checksum. Can be MD5 or SHA1. + + + + + The generated checksum file's name will be the + original filename with "." and fileext + added to it. Defaults to the + algorithm name being used + + + + + Set of files to use as input + + + + + + Executes an alternate set of tasks depending on conditions that are + individually set on each group of tasks. + + + + + The selects one among a number of possible + alternatives. It consists of a sequence of <when> elements + followed by an optional <otherwise> element. + + + Each <when> element has a single attribute, test, which + specifies an expression. The content of the <when> and + <otherwise> elements is a set of nested tasks. + + + The content of the first, and only the first, <when> + element whose test is is executed. If no + <when> element is , the + content of the <otherwise> element is executed. + If no <when> element is , and no + <otherwise> element is present, nothing is done. + + + + + Execute alternate set of tasks depending on the configuration being + built. + + + + + + ... + + + + ... + + + Build configuration '${build.config}' is not supported! + + + ]]> + + + + + + One or more alternative sets of tasks to execute. + + The set of tasks to add. + + + + The set of tasks to execute if none of the + elements are . + + + + + Gets a value indicating whether a fallback element is defined. + + + if a fallback element is defined; otherwise, + . + + + + + Groups a set of tasks to execute when a condition is met. + + + + + Executes embedded tasks in the order in which they are defined. + + + + + Creates and executes the embedded (child XML nodes) elements. + + + + + Gets a value indicating whether the element is performing additional + processing using the that was use to + initialize the element. + + + , as a is + responsable for creating tasks from the nested build elements. + + + + + Used to test arbitrary boolean expression. + + + + + Generates statistics from source code. + + + Scans files in a fileset counting lines. + + + + Generate statistics for a set of C# and VB.NET sources, applying + different labels for both. + + + + + + + + + + + + + + + + + ]]> + + + + + Generate statistics for all C# sources and only output a summary to + the log. + + + + + + + + + + + + ]]> + + + + + + Set of line counters to enable. + + + + + An identifier to be able to track which build last updated the + code stats file. + + + + + Specifies whether the results should be appended to the output file. + The default is . + + + + + If you only want to show summary stats for the whole fileset + + + + + The name of the file to save the output to (in XML). + + + + + A task that concatenates a set of files. + Loosely based on Ant's Concat task. + + + + This task takes a set of input files in a fileset + and concatenates them into a single file. You can + either replace the output file, or append to it + by using the append attribute. + + + The order the files are concatenated in is not + especified. + + + + + + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + + This is where the work is done + + + + + Opens the destination file according + to the specified flags + + + + + + Appends all specified files + + File to write to + + + + Name of the destination file. + + + + + Specifies whether to append to the destination file. + The default is . + + + + + Set of files to use as input. + + + + + On execution guarantees the listed dependencies are resolved before continuing. It is + particularly useful for handling dynamic dependencies that change based on some input + conditions/parameters, or when the dependencies are not known until runtime. + + The depends task never forces the execution of any target that has already been executed. It works just like the depends attribute of a . + + + + Executes the specified task. + + + + + A space or comma separated dependency list of targets. + + + Expressions get evaluated when the task is executed. + + + + + Discovers the URLs of XML web services on a web server and saves documents + related to them to the local disk. The resulting .discomap, .wsdl, and .xsd files + can be used with the to produce web service clients and + and abstract web service servers using ASP.NET. + + + Generate a proxy class for a web service. + + + ]]> + + + + + + Discover the details for the specified web service. + + + + The URL or Path to discover. + + + Suppresses the banner. + + + Do not save the discovered documents to the local disk. + + + The output directory to save discovered documents in. + + + Username of an account with credentials to access a + server that requires authentication. + + + Password of an account with credentials to access a + server that requires authentication. + + + Domain of an account with credentials to access a + server that requires authentication. + + + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. + + + Username of an account with credentials to access a + proxy that requires authentication. + + + Password of an account with credentials to access a + proxy that requires authentication. + + + Domain of an account with credentials to access a + proxy that requires authentication. + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Analyzes managed code assemblies and reports information about the + assemblies, such as possible design, localization, performance, and + security improvements. + + + + this task relies on fxcopcmd.exe being in your PATH environment variable. + You can download the latest FxCop from . + + + + + + + + + + + + + ]]> + + + + + + Creates a new instance. + + + + + Performs logic before the external process is started + + Process. + + + + Executes the task. + + + + + Builds the arguments to pass to the exe. + + + + + Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. + + + + + Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. + + + + + Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. + + + + + Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory. + + + + + Specifies the target assembly to analyze. + + + + + Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results. + + + + + Specifies the file name for the analysis report. + + + + + Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. + + + + + Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. + + + + + Specifies the filename of FxCop project file. + + + + + Specifies the filename(s) of FxCop project file(s). + + + + + Includes a summary report with the informational messages returned by FxCopCmd. + + + + + Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. + Use the wildcard character '*' at the end of the name to select multiple types. + + + + + Saves the results of the analysis in the project file. + + + + + Determines if the task should fail when analysis errors occur + + + + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + It will be evaluated relative to the project's + base directory if it is relative. + + + + + + Gets the program arguments. + + + + + Installs assemblies into the Global Assembly Cache (GAC) by using the + gacutil SDK tool. + + + + Assemblies can be installed to the GAC with or without reference counting. + The full details of reference counting can be found in the SDK + documentation. + + + + Installs Shared.dll into the GAC. + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC. + + + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC and + specifies reference information. + + + + + + + + + + ]]> + + + + + + Base class functionality for the GAC tasks. + + + Concrete GAC tasks extend this class in order to obtain common functionality. + + + + + Stores the details of the assembly currently being operated against. This could be a name or + path, depending on the concrete task. + + + + + See . + + + + + See . + + + + + Constructs and initialises an instance of GacTask. + + + + + Starts the process that is wrapped by this GAC task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. + + + + Validates the task's configuration. + + The task node. + + + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + + + + + Appends any task-specific program arguments. + + The StringBuilder on which to append program arguments. + + Subclasses must override this method to return the arguments with which to run the GAC task. + + + + + Invoked prior to invoking ExecuteTask() on the base class. + + + Allows, for example, subclasses to output useful information to the log. + + + + + Gets or sets a value indicating whether the GAC operation will be forced. + + + The exact meaning of this property is dependent on the subclass. As such, subclasses should override this + property to provide a valid description. + + + + + Specifies reference details to use when working with the GAC. + + + + + Concrete GAC tasks must override this property to return an array of assembly names or paths + upon which to operate. + + + + + Gets the executable name for the gacutil command-line tool. + + + + + Specifies whether a reference was specified for the GAC task. + + + + + Gets the current assembly being operated against. + + + + + Gets the program arguments with which to run the gacutil process. + + + + + See . + + + + + Constructs and initialises an instance of the GacInstallTask. + + + + + Appends any install-specific arguments. + + The StringBuilder to append arguments to. + + + + Outputs log information. + + + + + Specifies the assemblies to install. + + + + + Gets the assembly list to install. + + + + + If , the specified assemblies will be forcibly + installed. Any existing duplicate assemblies in the GAC will be + overwritten. The default is . + + + + + Manipulates the contents of the global assembly cache. + + + + This tasks provides some of the same functionality as the gacutil tool + provided in the .NET Framework SDK. + + + Specifically, the allows you to install assemblies + into the cache and remove them from the cache. + + + Refer to the + Global Assembly Cache Tool (Gacutil.exe) for more information. + + + + + Inserts assembly mydll.dll into the global assembly cache. + + + + ]]> + + + + + Removes the assembly hello from the global assembly cache and + the native image cache. + + + + ]]> + + + Note that the previous command might remove more than one assembly + from the assembly cache because the assembly name is not fully + specified. For example, if both version 1.0.0.0 and 3.2.2.1 of + hello are installed in the cache, both of the assemblies will + be removed from the global assembly cache. + + + + + Use the following example to avoid removing more than one assembly. + This command removes only the hello assembly that matches the fully + specified version number, culture, and public key. + + + + ]]> + + + + + + The name of a file that contains an assembly manifest. + + + + + Defines the action to take with the assembly. The default is + . + + + + + Fileset are used to define multiple assemblies. + + + + + Defines the actions that can be performed on an assembly using the + . + + + + + Installs an assembly into the global assembly cache. + + + + + Installs an assembly into the global assembly cache. If an assembly + with the same name already exists in the global assembly cache, it is + overwritten. + + + + + Uninstalls an assembly from the global assembly cache. + + + + + Uninstalls assemblies from the Global Assembly Cache (GAC) by using the + gacutil SDK tool. + + + + Assemblies are specified via an . Individual + assemblies are specified by their identity information. Only a name is + required but, optionally, the assembly version, culture and public key + token may be specified. + + + Assemblies can be uninstalled from the GAC with or without reference + counting. The full details of reference counting can be found in the + SDK documentation. + + + + Uninstalls Shared assembly from the GAC. + + + + + + + ]]> + + + + + Uninstalls Shared and MyWeb from the GAC. + + + + + + + + + ]]> + + + + + Decrements references to Shared in the GAC and uninstalls if + the reference count reaches zero. + + + + + + + + + ]]> + + + + + Uninstalls version 2.1.7.9201 of Shared plus the + Australian-cultured MyWeb from the GAC. + + + + + + + + + ]]> + + + + + Uninstalls the neutrally-cultured, version 1.0.5000.0 of + System.Xml from the native image cache. The assembly must + also have a public key token of b77a5c561934e08a to be + uninstalled. + + + + + + + + ]]> + + + + + + See . + + + + + See . + + + + + Constructs an instance of the GacUninstallTask. + + + + + Appends any install-specific arguments. + + + + + + Outputs log information. + + + + + If , specifies that the assemblies should be + uninstalled from the native image cache. The default is . + + + + + Specifies the assemblies to uninstall. + + + + + Gets the assembly list to uninstall. + + + + + If , the specified assemblies will be forcibly + removed from the GAC. All references to the specified assemblies will + be removed from the GAC prior to removing the assemblies themselves. + The default is . + + + You cannot use this option to remove an assembly that was installed using Microsoft Windows Installer. + + + + + Compiles a Microsoft HTML Help 2.0 Project. + + + Compile a help file. + + + ]]> + + + + + + The name of the contents (.HxC) file. + + + + + ANSI/DBCS log filename. + + + + + Unicode log filename. + + + + + Root directory containing Help 2.0 project files. + + + + + Output (.HxS) filename. + + + + + Generate no informational messages. + + + + + Generate no error messages. + + + + + Generate no warning messages. + + + + + File to be decompiled. + + + + + Directory to place decompiled files into. + + + + + Arguments of program to execute + + + + + Registers a Microsoft HTML Help 2.0 Collection. + + + Register a help namespace. + + + ]]> + + + + + Help collection namespace. + + + Title identifier. + + + Collection (.HxC) filename. + + + Description of the namespace. + + + Help (.HxS) filename. + + + Index (.HxI) filename. + + + Combined full-text search (.HxQ) filename. + + + Combined attribute index (.HxR) filename. + + + Language ID. + + + Alias. + + + Filename of a file containing HxReg commands. + + + Unregister a namespace, title, or alias. + + + + Arguments of program to execute + + + + + Reads String values in INI files. + + Reads the value for AutoRefresh in the MS Transaction Server section + of the VendorMISMO2.ini ini file. Stores the value in the "myvar" property. + + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + + + + + INI File to Write To. + + + + + Key to set the value for. + + + + + value to set. + + + + + Section in the INI file. + + + + + property where we store the return value. + + + + + Sets String values in INI files. + + + Set the value for Executable in the VendorMISMO2.ini ini file + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + + + + + INI File to Write To. + + + + + Key to set the value for. + + + + + value to set. + + + + + Section in the INI file. + + + + + Builds the specified targets in the project file using MSBuild. + + + + If a project file is not specified, MSBuild searches the current + working directory for a file that has a file extension that ends in + "proj" and uses that file. + + + + + + Starts the external process and captures its output. + + + + + The project to build. + + + + + Set or override these project-level properties. + + + + + Build these targets in this project. Use a semicolon or a comma + comma to separate multiple targets. + + + + + Do not auto-include the MSBuild.rsp file. + + + + + Specifies the amount of information to display in the MSBuild log. + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Initializes a new instance of the + class. + + + + + Converts the given object to the type of this converter, using the + specified context and culture information. + + An that provides a format context. + A object. If a is passed, the current culture is assumed. + The to convert. + + An that represents the converted value. + + + + + A task that generates strongly typed WMI classes using + mgmtclassgen.exe. + + + The Management Strongly Typed Class Generator + enables you to quickly generate an early-bound + managed class for a specified Windows Management + Instrumentation (WMI) class. The generated + class simplifies the code you must write to access + an instance of the WMI class. + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + + This is where the work is done + + + + + Specifies the name of the WMI class + to generate the strongly typed class + + + + + Specifies the language in which to generate + the class. Possible values are: CS, VB, JS + + + + + Specifies the machine to connect to. + + + + + Specifies the path to the WMI namespace + that contains the class. + + + + + Namespace of the generated .NET class + + + + + Path of the file to generate + + + + + User name to use when connecting to + the specified machine + + + + + Password to use when connecting to the + specified machine + + + + + Filename of program to execute + + + + + Arguments of program to execute + + + + + Pre-translates native code for an assembly containing IL (Intermediary + Language bytecode) on the Windows platform. + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + Assembly path or display name. + + + If existing images should be shown. + + + If existing images should be deleted. + + + If an image should be generated which + can be used under a debugger. + + + If an image should be generated which + can be used under a debugger in optimized + debugging mode. + + + If an image should be generated which + can be used under a profiler. + + + + Arguments of program to execute + + + + + A task that generates a summary HTML + from a set of NUnit xml report files. + Loosely based on Erik Hatcher JUnitReport for Ant. + + + This task can generate a combined HTML report out of a + set of NUnit result files generated using the + XML Result Formatter. + + By default, NUnitReport will generate the combined + report using the NUnitSummary.xsl file located at the + assembly's location, but you can specify a different + XSLT template to use with the xslfile + attribute. + + Also, all the properties defined in the current + project will be passed down to the XSLT file as + template parameters, so you can access properties + such as nant.project.name, nant.version, etc. + + + + + + + + + ]]> + + + + + Initializes task and ensures the supplied attributes are valid. + + Xml node used to define this task instance. + + + + This is where the work is done + + + + + Initializes the XmlDocument instance + used to summarize the test results + + + + + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + Property List + + + + Loads the XSLT Transform + + + This method will load the file specified + through the the xslfile attribute, or + the default transformation included + as a managed resource. + + The Transformation to use + + + + Name of Output HTML file. + + + + + XSLT file used to generate the report. + + + + + Set of XML files to use as input + + + + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + + + + + Loads the XSLT file + + + + + + + + + A task that records the build's output to a file. Loosely based on Ant's + Record + task. + + + This task allows you to record the build's output, or parts of it to a + file. You can start and stop recording at any place in the build process. + + + + + + ]]> + + + + + + This is where the work is done. + + + + + Name of destination file. + + + + + Action to apply to this log instance - either , + , or + . + + + + + Determines whether the recorder will flush it's buffer after every + write to it. The default is . + + + Effective only with the action. + + + + + Determine the level of logging - either , + , , + or . + The default is . + + + Effective only with the action. + + + + + Registers an assembly for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register a single assembly. + + + + ]]> + + + + + Register an assembly while exporting a typelibrary. + + + + ]]> + + + + + Register a set of assemblies at once. + + + + + + + + + ]]> + + + + + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + + + + + Registry file to export to instead of entering the types directly + into the registry. If a fileset is used then the entries are all + collated into this file. + + + + + Set the code base registry setting. + + + + + Export a typelib and register it. The typelib will have the same + name as the source assembly unless the + attribute is used. + + + + + Only refer to already registered type libraries. + + + + + Export the assembly to the specified type library and register it. + This attribute is ignored when a fileset is specified. + + + + + Unregister the assembly. The default is . + + + + + The set of files to register. + + + + + Indicates that class should be validated by an XML Schema. + + None. + + + + Initializes a new instance of the + class. + + The of the object created by to represent the root node of your task. + + + + Initializes a new instance of the + class. + + The of the object created by to represent the root node of your task. + + + + + Gets or sets the of the object created by + to represent the root node of your task. + + + The of the object created by + to represent the root node of your task. + + + + + Defines possible reference counting scheme types for the GAC tasks. + + + + + Specifies that no reference counting scheme will be used when performing the GAC task. + + + + + Specifies that registry-related reference counting will be used when performing the GAC task. + + + When the scheme type is set to UninstallKey, the related scheme ID should be set to the name of the application + set in the HKLM\Software\Microsoft\Windows\CurrentVersion registry key. + + + + + + Specifies that file-based reference counting will be used when performing the GAC task. + + + When the scheme type is set to FilePath, the related scheme ID should be set to the full path to the executable + file that installs the assembly. + + + + + + Specifies that custom information will be supplied to accommodate reference counting. + + + When the scheme type is set to Opaque, the related scheme ID can be set to any custom piece of information. + + + + + Copies a file to a remote server using scp. + + + Copies a file using scp to a remote server. + The Username Environment variable is used. + + + Copy a single file to a remote server and path. + + + ]]> + + + + + + The program to execute. The default is "scp". + + + + + The command line arguments. + + + + + The file to transfer. + + + + + The server to send the file to. + + + + + The path on the remote server. The default is "~". + + + + + The username to connect as. The default is the value of the + USERNAME environment variable. + + + + + The path separator used by the program. The default is "/". + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + The directory in which the command will be executed. + + + + + Converts a Visual Studio.NET Solution to a NAnt build file or nmake file. + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build and call the new build file. + + + + + + + + ]]> + + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build. As the solution contains one or more web + projects, one or more maps needs to be specified. + + + + + + + + + ]]> + + + + + + Creates the for the specified format. + + + The for the specified format, or + if an unknown format was specified. + + + + + Converts an to a . + + + + + The Visual Studio.NET solution file to convert. + + + + + The output file format - either nant or nmake. + + + + + The output file name. + + + + + Mappings from URI to directories. These are required for web projects. + + + + + Parameters to pass to SLiNgshoT. The parameter build.basedir is required. + + + + + A task to execute arbitrary SQL statements against a OLEDB data source. + + + You can specify a set of sql statements inside the + sql element, or execute them from a text file that contains them. You can also + choose to execute the statements in a single batch, or execute them one by one + (even inside a transaction, if you want to). + + + + Execute a set of statements inside a transaction. + + + + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('My Job', 22, 45); + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('Other Job', 09, 43); + SELECT * FROM jobs; + + ]]> + + + + + Execute a set of statements from a file and write all query results + to a file. + + + + ]]> + + + + + Execute a SQL script generated by SQL Server Enterprise Manager. + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + XML node used to define this task instance. + + + + This is where the work is done. + + + + + Executes the SQL Statements one by one. + + + + + + Executes the SQL statements in a single batch. + + + + + + Process a result set. + + Result set. + to write output to. + + + + Connection string used to access database. + This should be an OleDB connection string. + + + + + The encoding of the files containing SQL statements. The default is + the system's current ANSI code page. + + + + + File where the sql statements are defined. + + + You cannot specify both a source and an inline set of statements. + + + + + String that separates statements from one another. + + + + + If true, the statements will be executed as a single batch. + If false, they will be executed one by one. Default is true. + + + + + If true, the any nant-style properties on the sql will be + expanded before execution. Default is true. + + + + + Command timeout to use when creating commands. + + + + + Kind of delimiter used. Allowed values are Normal or Line. + + + Delimiters can be of two kinds: Normal delimiters are + always specified inline, so they permit having two + different statements in the same line. Line delimiters, + however, need to be in a line by their own. + Default is Normal. + + + + + If set to true, results from the statements will be + output to the build log. + + + + + If set, the results from the statements will be output to the + specified file. + + + + + If set to , all statements will be executed + within a single transaction. The default is . + + + + + Whether output should be appended to or overwrite + an existing file. The default is . + + + + + If set to , prints headers for result sets. + The default is . + + + + + The character(s) to surround result columns with when printing, the + default is an empty string. + + + + + Gets the underlying to which output will + be written if is set. + + + A for the file specified in , + or if is not set. + + + + + Executes a set of tasks, and optionally catches a build exception to + allow recovery or rollback steps to be taken, or to define some steps + to be taken regardless if the tasks succeed or fail, or both. + + + + The tasks defined in the <> block + will be executed in turn, as they normally would in a target. + + + If a <> block is defined, the + tasks in that block will be executed in turn only if one of the tasks + in the <> block fails. This + failure will then be suppressed by the <> + block. + + + The message associated with the failure can also be caught in a + property for use within the <> + block. The original contents of the property will be restored upon + exiting the <> block. + + + If a <> block is defined, the + tasks in that block will be executed after the tasks in both the + <> and <> + blocks have been executed, regardless of whether any task fails in + either block. + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + In catch + Finally done + + + The failure in the <> block will + not cause the build to fail. + + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + Caught failure: Just because... + Finally done + Build failed: Bad catch + + + Like the above, the failure in the <> + block does not cause the build to fail. The failure in the + <> block does, however. + Note that the <> block is + executed even though the <> + block failed. + + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + Caught failure yet again + Build failed: Property 'failure' has not been set. + + + The in the <> + block failed because the "failure" property was not defined + after exiting the <> block. + Note that the failure in the <> + block has eclipsed the failure in the <> + block. + + + + + + + + + + + + + + + + + + ]]> + + + A more concrete example, that will always clean up the generated + temporary file after it has been created. + + + + + + The tasks in this block will be executed as a normal part of + the build script. + + + + + The tasks in this block will be executed if any task in the try + block fails. + + + + + The tasks in this block will always be executed, regardless of + what happens in the try and catch blocks. + + + Note that any failure in any of the tasks in this block will + prevent any subsequent tasks from executing. + + + + + Defines the name of the property to save the message describing + the failure that has been caught. + + + + The failure message is only available in the context of the catch + block. If you wish to preserve the message, you will need to save + it into another property. + + + Readonly properties cannot be overridden by this mechanism. + + + + + Generates collection classes based on a given XML specification file. Code generation is in the specified language. + + See the CollectionGen tool page for more information. + + + + + + + + + ]]> + + + + + + The actual generation work is done here. + + + + + + The language to generate collection classes for. Valid values are "CSharp" or "VB". + + + The name of the template file for collection generation. This is provided as an alternate to using the task's fileset. + + + + All files in this fileset will be run thru the collection generator. + + + + + Validates a set of XML files based on a set of XML Schemas (XSD). + + + + + + + + + + + + + ]]> + + + + + + This is where the work is done. + + + + + The XML files that must be validated. + + + + + The XML Schemas (XSD) to use for validation. + + + + + Compiles Microsoft Visual Basic 6 programs. + + + + Uses the VB6.EXE executable included with the Visual Basic 6 + environment. + + + The compiler uses the settings and source files specified in the + project or group file. + + + + + Build the project HelloWorld.vbp in the build directory. + + + + ]]> + + + + + + Compiles the Visual Basic project or project group. + + + + + Parses a VB group file and extract the file names of the sub-projects + in the group. + + The file name of the group file. + + A string collection containing the list of sub-projects in the group. + + + + + Determines if a VB project needs to be recompiled by comparing the timestamp of + the project's files and references to the timestamp of the last built version. + + The file name of the project file. + + if the project should be compiled; otherwise, + . + + + + + VB6 uses a special algorithm to search for the typelib file. It doesn't + rely on the API function QueryPathOfRegTypeLib, because VB could use a newer + version of the TLB. + + The algorithm used by VB is not perfect and has some flaws, which you could + get a newer version even if your requested version is installed. This is because + the algorithm iterates the registry beneath the Guid - entry by entry - from the + beginning and returns the first TLB version that is higher or equal to the + requested version. + + pseudo code: + 1. open the key HKEY_CLASSES_ROOT\TypeLib\{Guid} + 2. If the key exists: + 3. Foreach version under the key that has the requested culture entry: + 4. If the version higher or equal to the requested version: + 5. Get the TLB filename and returns it + + The guid of the tlb to look for + The major version number of the tlb + The minor version number of the tlb. If you parse minor from a string, treat the string as hex value. + The culture id + null if couldn't find a match, otherwise it returns the file. + + + + Parses a VB project file and extracts the source files, reference files, and + the name of the compiled file for the project. + + The filename of the project file. + + A fileset representing the source files of the project, which will + populated by the method. + + + A fileset representing the references of the project, which will + populated by the method. + + A string containing the output file name for the project. + + + + Output directory for the compilation target. + + + + + Visual Basic project or group file. + + + + + Determines whether project references are checked when deciding + whether the project needs to be recompiled. The default is + . + + + + + The file to which the Visual Basic compiler should log errors. + + + + + Tells Visual Basic which values to use for conditional compilation + constants. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Increments a four-part version number stored in a text file. The resulting + version number is written back to the file and exposed using NAnt properties. + + + + The version number format in the text file is + Major.Minor.Build.Revision, e.g. 1.0.5.25. + + + + Major + Set in file. + + + Minor + Set in file. + + + Build + Can be incremented by setting the parameter. + + + Revision + Can be incremented by setting the parameter. + + + The following NAnt properties are created: + + + prefix.version + The complete version number, i.e. Major.Minor.Build.Revision + + + prefix.major + The major component of the version number. + + + prefix.minor + The minor component of the version number. + + + prefix.build + The build component of the version number. + + + prefix.revision + The revision component of the version number. + + + + + + + Reads a version string from and returns it as a + instance. + + + A instance representing the version string in + . + + + + + Writes the specified version to . + + The version to write to . + + + + Calculates the build number based on the number of months since the + start date. + + + The build number based on the number of months since the start date. + + + + + Calculates the number of seconds since midnight. + start date. + + + The number of seconds since midnight. + + + + + Calculates the build number of the version number based on + . + + + The build number. + + + + + Calculates the complete version. + + + The version. + + + + + Calculates the revision number of the version number based on RevisionType specified + + + The revision number. + + + + + The string to prefix the properties with. The default is + 'buildnumber.'. + + + + + Start of project. Date from which to calculate build number. + Required if is used as + . + + + + + Path to the file containing the current version number. The default + file is 'build.number' in the project base directory. + + + + + The algorithm for generating build number. The default is + . + + + + + The algorithm for generating revision number. The default is + . + + + + + Defines possible algorithms to generate the build number. + + + + + Use the number of months since start of project * 100 + current + day in month as build number. + + + + + Increment an existing build number. + + + + + Use an existing build number (and do not increment it). + + + + + Defines possible algorithms to generate the revision number. + + + + + Use the number of seconds since the start of today / 10. + + + + + Increment an existing revision number. + + + + Generates code for web service clients and xml web services + using ASP.NET from WSDL contract files, XSD Schemas and .discomap + discovery documents. Can be used in conjunction with .disco files. + + Generate a proxy class for a web service. + ]]> + + + + URL or Path to a WSDL, XSD, or .discomap document. + + + Suppresses the banner. + + + Language of generated code. 'CS', 'VB', 'JS', + or the fully-qualified name of a class implementing + System.CodeDom.Compiler.CodeDomCompiler. + + + Compiles server-side ASP.NET abstract classes + based on the web service contract. The default is to + create client side proxy classes. + + + Microsoft.NET namespace of generated classes. + + + Output filename of the created proxy. Default name is derived from the service name. + + + Override default protocol to implement. Choose from 'SOAP', + 'HttpGet', 'HttpPost', or a custom protocol as specified in the + configuration file. + + + Username of an account with credentials to access a + server that requires authentication. + + + Password of an account with credentials to access a + server that requires authentication. + + + Domain of an account with credentials to access a + server that requires authentication. + + + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. + + + Username of an account with credentials to access a + proxy that requires authentication. + + + Password of an account with credentials to access a + proxy that requires authentication. + + + Domain of an account with credentials to access a + proxy that requires authentication. + + + Configuration key to use in the code generation to + read the default value for the Url property. The default is + not to read from the config file. + + + Base Url to use when calculating the Url fragment. + The UrlKey attribute must also be specified. + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + The generates XML schema or common language runtime + classes from XDR, XML, and XSD files, or from classes in a runtime assembly. + + + + The following operations can be performed : + + + + Operation + Description + + + XDR to XSD + + Generates an XML schema from an XML-Data-Reduced schema file. + XDR is an early XML-based schema format. + + + + XML to XSD + + Generates an XML schema from an XML file. + + + + XSD to DataSet + + Generates common language runtime + classes from an XSD schema file. The generated classes + provide a rich object model for regular XML data. + + + + XSD to Classes + + Generates runtime classes from an XSD schema file. The + generated classes can be used in conjunction with + to + read and write XML code that follows the schema. + + + + Classes to XSD + + Generates an XML schema from a type or types in a runtime + assembly file. The generated schema defines the XML format + used by . + + + + + + Compile a XML Schema. + + + ]]> + + + + Generate an XML Schema from an assembly. + + + ]]> + + + + Generate an XML Schema from an XML document. + + + ]]> + + + + Generate an XML Schema from an XDR Schema. + + + ]]> + + + + + + Validates the . + + The used to initialize the . + + + + XML Schema (.xsd) filename. + + + + + Target of XML Schema compilation - either classes or + dataset. The default is classes. + + + + + XML element in the Schema to process. + + + TO-DO : turn this into collection of elements ! + + + + + The language to use for the generated code - either CS, + VB, JS, VJC or the fully-qualified name of a + class implementing . + + + + + Specifies the runtime namespace for the generated types. The default + namespace is Schemas. + + + + + The output directory in which to place generated files. + + + + + Assembly (.dll or .exe) to generate an XML Schema for. + + + + + Types in the assembly for which an XML schema is being created. + By default all types in the assembly will be included. + + + TO-DO : turn this into collection of types ! + + + + + Specifies the URI for the elements in the to + generate code for. + + + + + XML document to generate an XML Schema for. + + + + + XDR Schema to generate an XML Schema for. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Indicates the status of a service. + + + + + The service is unbound. + + + + + The service is bound. + + + + + The service is enlisted, but not started. + + + + + The service is started. + + + + + Specialized that supports converting + a to a string value that can be used in + ClearCase commandline tools. + + + + + Initializes a new instance of the + class. + + + + + Introduces specialized behavior for converting a + value to a string that can be used in ClearCase commandline tools. + + An that provides a format context. + A object. If a is passed, the current culture is assumed. + The to convert. + The which should be converted to. + + An that represents the converted value. + + + + + Defines the report types supported by . + + + + + Report with separate HTML frames. + + + + + Frameless report. + + + + + Represents an entity in an . + + + + + + + + + + + + + + Constructs and initializes an instance of Entity. + + + + + The path for the entity. + + + + + If true then the entity will be included. The default is true. + + + + + Opposite of . If false then the entity will be included. The default is + false. + + + + + Represents a set of entities to include in a PVCS project database task. + + + + + + + + + Constructs and initializes an instance of EntitySet. + + + + + Gets the collection of entity paths assigned to this entity set. + + + + + The entities to include in the project task. + + + + + Represents a single assembly in an . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + Constructs and initializes an instance of Assembly. + + + + + Converts this Assembly object into it's string representation. + + + + + + The culture for the assembly. + + + + + If true then the assembly will be included. The default is true. + + + + + The name of the assembly. + + + + + The public key token of the assembly. + + + + + Opposite of . If false then the assembly will be included. The default is + false. + + + + + The version of the assembly. + + + + + Represents a set of assemblies via their identity information. + + + + + + + + Constructs and initializes an instance of AssemblySet. + + + + + Gets the collection of assemblies added to this assembly set. + + + + + The assemblies to include. + + + + + The set of files to work on. + + + + + The label to apply to the results. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with + value is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Individual filter component of . + + + + + Holds the token which will be replaced in the filter operation. + + + + + Holsd the value which will replace the token in the filtering operation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with + the given token and value. + + The token which will be replaced when filtering. + The value which will replace the token when filtering. + + + + The token which will be replaced when filtering. + + + + + The value which will replace the token when filtering. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + token is in the collection. + + The token to locate in the collection. + + if a with the given + token is found in the collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified token. + + The token to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + A set of filters to be applied to something. + + + + A filter set may have begintoken and endtokens defined. + + + + + + The default token start string. + + + + + The default token end string. + + + + + Initializes a new instance of the class. + + + + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + + + + + The string used to identity the beginning of a token. The default is + @. + + + + + The string used to identify the end of a token. The default is + @. + + + + + The filters to apply. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + + + + + Checks to see if there are filters in the collection of filtersets. + + + if there are filters in this collection of + filtersets; otherwise, . + + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Used to specify reference information when working with the GAC. + + + + The full details of GAC references can be found in the SDK documentation. + + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + Constructs and initializes an instance of GacReference. + + + + + If true then the entity will be included. The default is true. + + + + + The scheme type to use when working with GAC references. The default + is , which means that references will + not be used by the GAC task. + + + + + The scheme ID to use when working with GAC references. This is only + relevant if a scheme type other than + is specified. + + + + + The scheme description to use when working with GAC references. This + is only relevant if a scheme type other than + is specified. + + + + + Opposite of . If false then the entity will be included. The default is + false. + + + + + Represents the an element based on a schema definition. + + + + + Represents the schema collection element. + + + + + Namespace URI associated with this schema. + If not present, it is assumed that the + schema's targetNamespace value is to be used. + + + + + Location of this schema. Could be a + local file path or an HTTP URL. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with + value is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Helper class to calculate checksums + of files. + + + + + Create a new instance + + Name of hash algorithm to use + + + + Calculates a checksum for a given file + and returns it in a hex string + + name of the input file + hex checksum string + + + + Converts a checksum value (a byte array) + into a Hex-formatted string. + + Checksum value to convert + Hexified string value + + + + Recorder interface user with the Record task + + + + + Starts recording. + + + + + Stops recording. + + + + + Closes the recorder. + + + + + Flushes the recorder. + + + + + Gets the name of this recorder (possibly a file name). + + + + + Gets The underlying instance. + + + + + Defines whether the underlying writer is automatically flushes or + not. + + + + + Keeps track of used recorders + + + + + Initializes a new instance of the + class. + + + + + Flushes buffered build events or messages to the underlying storage. + + + + + Signals that a build has started. + + The source of the event. + A object that contains the event data. + + This event is fired before any targets have started. + + + + + Signals that the last target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a target has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a task has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a message has been logged. + + The source of the event. + A object that contains the event data. + + Only messages with a priority higher or equal to the threshold of + the logger will actually be output in the build log. + + + + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The priority of the message to output. + The message to output. + The number of characters that the message should be indented. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The event to output. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The event to output. + TODO + + + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + + + + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + + + + + Gets or sets the to which the logger is + to send its output. + + + + + Groups a set of useful file manipulation methods. + + + + + Initializes a new instance of the class. + + + Prevents instantiation of the class. + + + + + Copies a file while replacing the tokens identified by the given + . + + The file to copy. + The name of the destination file. + The used when filter-copying the file. + The collection of filtersets that should be applied to the file. + + + + Moves a file while replacing the tokens identified by the given + . + + The file to move. + The name of the destination file. + The used when filter-copying the file. + The collection of filtersets that should be applied to the file. + + + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + + + + + Returns a string from your INI file + + + + + + + + + ' Writes a string to your INI file + + + + + + + + ' Stores all the cached changes to your INI file + + + + + Helper class used to execute Sql Statements. + + + + + Initializes a new instance. + + OleDB Connection string + True if you want to use a transaction + + + + Close the connection and terminate + + true if the transaction should be commited + + + + Executes a SQL statement. + + SQL statement to execute + Command timeout to use + Data reader used to check the result + + + + OleDB Connection object + + + + + Helper class to adapt SQL statements from some + input into something OLEDB can consume directly + + + + + Creates a new instance + + + + + + Adapts a set of Sql statements from a string. + + A string containing the original sql statements + + + + Adapts a set of Sql statements from a string. + + Path of file containing all sql statements + The encoding of the file containing the SQL statements. + The new instance + + + + Determines how the delimiter is interpreted in a SQL string. + + + + + Delimiter can appear anywhere on a line. + + + + + Delimiter always appears by itself on a line. + + + + + Helper class to maintain a list of SQL Statements. + + + + + Initializes a new instance. + + String that separates statements from each other + Style of the delimiter + + + + Parses the SQL into the internal list using the specified delimiter + and delimiter style + + The SQL string to parse. + + + + Parses the contents of the file into the + internal list using the specified delimiter + and delimiter style + + File name + The encoding of the file containing the SQL statements. + + + + Allows foreach(). + + + + + + Strips all single line comments + in the specified sql + + + + + + + Expands project properties in the + sql string + + + + + + + Gets the number of statements in the list. + + + + + Gets the statement specified by the index. + + + + + Project's properties for property expansion + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/slips/build/tools/nant/bin/NAnt.Core.dll b/slips/build/tools/nant/bin/NAnt.Core.dll new file mode 100644 index 0000000..aa48486 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.Core.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.Core.xml b/slips/build/tools/nant/bin/NAnt.Core.xml new file mode 100644 index 0000000..ef37c99 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.Core.xml @@ -0,0 +1,15577 @@ + + + + NAnt.Core + + + + + Used to indicate that a property should be able to be converted into a + . + + + + + Base class for all validator attributes. + + + + + Validates the specified value. + + The value to be validated. + The validation fails. + + + + Initializes a new instance of the + class. + + + + + Checks if the specified value can be converted to a . + + The value to be checked. + cannot be converted to a . + + + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + #region Public Instance Properties + + [BuildAttribute("out", Required=true)] + public string Output { + get { return _out; } + set { _out = value; } + } + + [BuildAttribute("optimize")] + [BooleanValidator()] + public bool Optimize { + get { return _optimize; } + set { _optimize = value; } + } + + [BuildAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + public int WarnLevel { + get { return _warnLevel; } + set { _warnLevel = value; } + } + + [BuildElement("sources")] + public FileSet Sources { + get { return _sources; } + set { _sources = value; } + } + + #endregion Public Instance Properties + + #region Private Instance Fields + + private string _out = null; + private bool _optimize = false; + private int _warnLevel = 4; + private FileSet _sources = new FileSet(); + + #endregion Private Instance Fields + + + + + + Initializes a new instance of the with the + specified name. + + The name of the attribute. + is . + is a zero-length . + + + + Gets or sets the name of the XML attribute. + + + The name of the XML attribute. + + + + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + + + + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + + + + + Used to specify how this attribute will be handled as the XML is + parsed and given to the element. + + + if XML should be processed; otherwise + . The default is . + + + + + Indicates that property should be treated as a XML arrayList + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + ]]> + + + + + + + Indicates that the property should be treated as an XML element and + further processing should be done. + + + + The XML format is like this: + + + + + + + ]]> + + + + + + + Initializes a new instance of the with the + specified name. + + The name of the attribute. + is . + is a zero-length . + + + + Gets or sets the name of the attribute. + + + The name of the attribute. + + + + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + + + + + Used to specify how this element will be handled as the XML is parsed + and given to the element. + + + if XML should be processed; otherwise + . The default is . + + + + + Initializes a new instance of the + with the specified name. + + The name of the attribute. + is . + is a zero-length . + + + + Gets or sets the type of objects that this container holds. + + + The type of the elements that this container holds. + + + + This can be used for validation and schema generation. + + + If not specified, the type of the elements will be determined using + reflection. + + + is . + + + + Indicates that the property should be treated as a container for a + collection of build elements. + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + + + ]]> + + + + + + + Initializes a new instance of the with the + specified name and child element name. + + The name of the collection. + The name of the child elements in the collection + is . + is a zero-length . + + + + The name of the child element within the collection. + + + The name to check for in the XML of the elements in the collection. + + + This can be used for validation and schema generation. + + + + + Used to indicate that a property should be able to be converted into a + . + + + + + Initializes a new instance of the + class. + + + + + Checks if the specified value can be converted to a . + + The value to be checked. + cannot be converted to a . + + + + Indicates that class should be treated as a NAnt element. + + + Attach this attribute to a subclass of Element to have NAnt be able + to recognize it. The name should be short but must not confict + with any other element already in use. + + + + + Initializes a new instance of the + with the specified name. + + The name of the element. + is . + is a zero-length . + + + + Gets or sets the name of the element. + + + The name of the element. + + + + + Indicates that a property should be treated as a XML file set for the + task. + + + + + Initializes a new instance of the with the + specified name. + + The name of the attribute. + is . + is a zero-length . + + + + Indicates that the value of the property to which the attribute is + assigned, can be configured on the framework-level in the NAnt application + configuration file. + + + + The following example shows a property of which the value can be + configured for a specific framework in the NAnt configuration file. + + + [FrameworkConfigurable("exename", Required=true)] + public virtual string ExeName { + get { return _exeName; } + set { _exeName = value; } + } + + + + + + Initializes a new instance of the + with the specified attribute name. + + The name of the framework configuration attribute. + is a . + is a zero-length . + + + + Gets or sets the name of the framework configuration attribute. + + The name of the framework configuration attribute. + + + + Gets or sets a value indicating whether the configuration attribute + is required. + + + if the configuration attribute is required; + otherwise, . The default is . + + + + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + + + + + Indicates that the method should be exposed as a function in NAnt build + files. + + + Attach this attribute to a method of a class that derives from + to have NAnt be able to recognize it. + + + + + Initializes a new instance of the + class with the specified name. + + The name of the function. + is . + is a zero-length . + + + + Gets or sets the name of the function. + + + The name of the function. + + + + + Indicates that class should be treated as a set of functions. + + + Attach this attribute to a class that derives from + to have NAnt be able to recognize it as containing custom functions. + + + + + Initializes a new instance of the + class with the specified name. + + The prefix used to distinguish the functions. + The category of the functions. + + is . + -or- + is . + + + is a zero-length . + -or- + is a zero-length . + + + + + Gets or sets the category of the function set. + + + The name of the category of the function set. + + + This will be displayed in the user docs. + + + + + Gets or sets the prefix of all functions in this function set. + + + The prefix of the functions in this function set. + + + + + Indicates that property should be able to be converted into a + within the given range. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class with the specied minimum and maximum values. + + The minimum value. + The maximum value. + + + + Checks whether the specified value can be converted to an + and whether the value lies within the range defined by the + and properties. + + The value to be checked. + + + cannot be converted to an . + + -or- + + is not in the range defined by + and . + + + + + + Gets or sets the minimum value. + + + The minimum value. The default is . + + + + + Gets or sets the maximum value. + + + The maximum value. The default is . + + + + + The base of the number to validate, which must be 2, 8, 10, or 16. + + + The base of the number to validate. + + + The default is 10. + + + + + Defines possible locations in which a task executable can be located. + + + + + Locates the task executable in the current Framework directory. + + + + + Locates the task executable in the current Framework SDK directory. + + + + + Indicates the location that a task executable can be located in. + + + + When applied to a task deriving from , + the program to execute will first be searched for in the designated + location. + + + If the program does not exist in that location, and the file name is + not an absolute path then the list of tool paths of the current + target framework will be searched (in the order in which they are + defined in the NAnt configuration file). + + + + + + Initializes a new instance of the + with the specified location. + + The of the attribute. + + + + Gets or sets the of the task. + + + The location type of the task to which the attribute is assigned. + + + + + Used to indicate whether a property should allow + an empty string value or not. + + + + + Initializes a new instance of the + class. + + + + + Checks if the specified value adheres to the rules defined by the + properties of the . + + The value to be checked. + is an empty string value and is set to . + + + + Gets or sets a value indicating whether an empty string or + should be a considered a valid value. + + + if an empty string or + should be considered a valid value; otherwise, . + The default is . + + + + + Gets or sets a regular expression. The string will be validated to + determine if it matches the expression. + + + + + + + + An optional error message that can be used to better describe the + regular expression error. + + + + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + // task XmlType default is string + [TaskAttribute("out", Required=true)] + string _out = null; // assign default value here + + [TaskAttribute("optimize")] + [BooleanValidator()] + // during ExecuteTask you can safely use Convert.ToBoolean(_optimize) + string _optimize = Boolean.FalseString; + + [TaskAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + // during ExecuteTask you can safely use Convert.ToInt32(_optimize) + string _warnlevel = "0"; + + [BuildElement("sources")] + FileSet _sources = new FileSet(); + + NOTE: Attribute values must be of type of string if you want + to be able to have macros. The field stores the exact value during + Initialize. Just before ExecuteTask is called NAnt will expand + all the macros with the current values. + + + + + Initializes a new instance of the + with the specified attribute name. + + The name of the task attribute. + is a . + is a zero-length . + + + + Indicates that class should be treated as a task. + + + Attach this attribute to a subclass of Task to have NAnt be able + to recognize it. The name should be short but must not confict + with any other task already in use. + + + + + Initializes a new instance of the + with the specified name. + + The name of the task. + is . + is a zero-length . + + + + Represents an explicitly named list of directories. + + + A is useful when you want to capture a list of + directories regardless whether they currently exist. + + + + + Models a NAnt XML element in the build file. + + + + Automatically validates attributes in the element based on attributes + applied to members in derived classes. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + from the specified element. + + The element that should be used to create a new instance of the class. + + + + Performs default initialization. + + + Derived classes that wish to add custom initialization should override + the method. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the project. + + + + + Derived classes should override to this method to provide extra + initialization and validation not covered by the base class. + + The XML node of the element to use for initialization. + + + + Derived classes should override to this method to provide extra + initialization and validation not covered by the base class. + + + Access to the that was used to initialize + this is available through . + + + + + Copies all instance data of the to a given + . + + + + + Performs initialization using the given set of properties. + + + + + Initializes all build attributes and child elements. + + + + + Locates the XML node for the specified attribute in the project + configuration node. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + + + + + Returns the of the + assigned to the specified + . + + The of which the assigned should be retrieved. + + The assigned to the specified + or a null reference is no + is assigned to the . + + + + + Gets or sets the parent of the element. + + + The parent of the element. + + + This will be the parent , , or + depending on where the element is defined. + + + + + Gets the name of the XML element used to initialize this element. + + + The name of the XML element used to initialize this element. + + + + + Gets or sets the to which this element belongs. + + + The to which this element belongs. + + + + + Gets the properties local to this and the + . + + + The properties local to this and the . + + + + + Gets or sets the . + + + The . + + + The defines the current namespace + scope and provides methods for looking up namespace information. + + + + + Gets or sets the XML node of the element. + + + The XML node of the element. + + + + + Gets or sets the location in the build file where the element is + defined. + + + The location in the build file where the element is defined. + + + + + Gets a value indicating whether the element is performing additional + processing using the that was used to + initialize the element. + + + . + + + + Elements that need to perform additional processing of the + that was used to initialize the element, should + override this property and return . + + + When , no build errors will be reported for + unknown nested build elements. + + + + + + Configures an using meta-data provided by + assigned attributes. + + + + + Initializes a new instance of the + class for the given . + + The for which an should be created. + The to initialize the with. + The to use for property expansion. + The framework that the should target. + + is . + -or- + is . + -or- + is . + + + + + Creates a child using property set/get methods. + + The instance that represents the property of the current class. + The used to initialize the new instance. + The collection of property values to use for macro expansion. + The from which to obtain framework-specific information. + The child. + + + + Creates an for the given + . + + The for which an should be created. + + An for the given . + + + + + Holds the that should be initialized. + + + + + Holds the that should be used to initialize + the . + + + + + Holds the dictionary that should be used for property + expansion. + + + + + Holds the framework that should be targeted by the + that we're configuring, or + if there's no current target + framework. + + + + + Holds the names of the attributes that still need to be + processed. + + + + + Holds the names of the child nodes that still need to be + processed. + + + + + Holds the logger for the current class. + + + + + Holds the cache of instances. + + + + + Gets the . + + + The . + + + The defines the current namespace + scope and provides methods for looking up namespace information. + + + + + Internal interface used for setting element attributes. + + + + + The base of the directory of this dirlist. The default is the project + base directory. + + + + + Gets the collection of environment variables that should be passed + to external programs that are launched. + + + + The collection of environment variables that should be passed + to external programs that are launched. + + + + + + The command-line arguments for the runtime engine. + + + + + Represents an in which one or more extensions + are found. + + + + + Initializes a new instance of the + class for a given . + + The for which to construct an . + + + + Gets the containing extensions. + + + + + Initializes a instance of the + class for an extension in a given . + + The in which the extension is found. + is . + + + + Gets the in which the extension + was found. + + + + + Gets the from which the extension will + be created. + + + The containing the extension. + + + + + Initializes a new instance of the + with the specified type. + + The type of the to consume. + is . + + + + Responsible for scanning types for plugins, and maintaining a cache of + instances. + + + + + Scans a given for plugins. + + The containing the to scan. + The to scan. + The which will be used to output messages to the build log. + + if represents a + ; otherwise, . + + + + + Registers matching plugins for the specified . + + The which plugins must be registered for. + is . + + + + Functions as a chainable TextReader + + + Implements a abstraction over a TextReader that allows the class to represent + either a TextReader or another ChainableReader to which it is chained. + + By passing a ChainableReader as a constructor paramater it is possiable to + chain many ChainableReaders together. The last ChainableReader in the chain must + be based on a TextReader. + + + + + Makes it so all calls to Read and Peek are passed the ChainableReader + passed as a parameter. + + ChainableReader to forward calls to + + + + Makes it so all calls to Read and Peek are passed the TextReader + passed as a parameter. + + TextReader to forward calls to + + + + Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor. + + Character or -1 if end of stream + + + + Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor. + + + Character or -1 if end of stream. + + + + + Closes the reader. + + + + + Calls close and supresses the finalizer for the object. + + + + + Gets a value indicating if the reader is backed by a stream in the + chain. + + + if the reader is backed by a stream; + otherwise, . + + + + + Allows a file's content to be modified while performing an operation. + + + + + Called after construction and after properties are set. Allows + for filter initialization. + + + + + If then the filter will be used; otherwise, + skipped. The default is . + + + + + Opposite of . If + then the filter will be executed; otherwise, skipped. The default + is . + + + + + Creates a new instance of the class + for the specified class in the specified + . + + The containing the . + The class representing the . + + + + Gets the name of the class that can be created + using this . + + + The name of the class that can be created using + this . + + + + + Gets the name of the filter which the + can create. + + + The name of the task which the can + create. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a for the specified + task is in the collection. + + The name of task for which the should be located in the collection. + + if a for + the specified task is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the for the specified task. + + The name of the filter for which the should be located in the collection. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represent a chain of NAnt filters that can be applied to a . + + + + A FilterChain represents a collection of one or more filters that can + be appled to a such as the . + In the case of the , the contents of the copied + files are filtered through each filter specified in the filter chain. + Filtering occurs in the order the filters are specified with filtered + output of one filter feeding into another. + + + :--------:--->:----------:--->:----------: ... :----------:--->:--------:
+ :.Source.:--->:.Filter 1.:--->:.Filter 2.: ... :.Filter n.:--->:.target.:
+ :--------:--->:----------:--->:----------: ... :----------:--->:--------:
+
+ + A list of all filters that come with NAnt is available here. + + + The following tasks support filtering with a FilterChain: + + + + + + + + + +
+ + + Replace all occurrences of @NOW@ with the current date/time and + replace tabs with spaces in all copied files. + + + + + + + + + + + + + + + ]]> + + +
+ + + Provides the abstract base class for types. + + + + + Should be overridden by derived classes. clones the referenced types + data into the current instance. + + + + + Copies all instance data of the to a given + . + + + + + The ID used to be referenced later. + + + + + The ID to use as the reference. + + + + + Gets a value indicating whether a reference to the type can be + defined. + + + Only types with an assigned + to it, can be referenced. + + + + + Gets the name of the datatype. + + + The name of the datatype. + + + + + Initializes all build attributes and child elements. + + + needs to maintain the order in which the + filters are specified in the build file. + + + + + Used to to instantiate and return the chain of stream based filters. + + The that is the source of input to the filter chain. + + The is the first + in the chain, which is based on a physical stream that feeds the chain. + + + The last in the chain. + + + + + The filters to apply. + + + + + The encoding to assume when filter-copying files. The default is + system's current ANSI code page. + + + + + Configurator that initializes filters in the order in which they've + been specified in the build file. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represents a physical . That is a reader based + on a stream. + + + Used by to represent a + based on a in the chain. + + + + + Parses NAnt properties and expressions + + + + This filter parses any NAnt properties or expressions found in its input, + inlining their values in its output. + + + Note: Due to limitations on buffering, expressions longer than 2048 + characters are not guaranteed to be expanded. + + Filters are intended to be used as a element of a . + + + Replace all properties with their corresponding values. + + + ]]> + + + + + + Holds data for expression expansion between input and output. + + + + + Called after construction and after properties are set. Allows + for filter initialization. + + + + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream + + + + Reads the next character applying the filter logic without advancing the current position in the stream. + + Char as an int or -1 if at the end of the stream + + + + Moves to the next character. + + + + + Refills the buffer, running our input through + .) + + + + + Determines whether we've passed the end of our data. + + + + + Replaces all occurrences of a given string in the original input with + user-supplied replacement string. + + + + This filter replaces all occurrences of a given string in the original + input stream with a user-supplied replacement string. By default string + comparisons are case sensitive but this can be changed by setting the + optional attribute to . + + + To use this filter specify the string to be replaced with the + attribute and the string to replace it with using the + attribute. + + + Filters are intended to be used as a element of a . + + + + + Replace all occurrences of "3.14" with "PI". + + + + ]]> + + + + + Replace all occurrences of "string", "String", etc. with "System.String". + + + + ]]> + + + + + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to + + + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream + + + + Reads the next character applying the filter logic without + advancing the current position in the stream. + + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + + + + + + Helper function used to search for the filter's traget string. If the string + is found the result is true. If the string was not found false is returned and + nonMatchingChars contains the characters that were read to determine if the + string is present. + + + + It is assumed the stream is positioned at the character after the first character + in the target string. + + + First character in target string + Ture if the stream ended while search for the string. + Characters that were read while searching for the string. + + + + + Returns the next character in the stream replacing the specified character. Using the + allows for the same implementation for Read and Peek + + Delegate to acquire the next character. (Read/Peek) + Char as an int or -1 if at the end of the stream + + + + Compares to characters taking into account the _ignoreCase flag. + + + + + + + + The string to be replaced. + + + + + The new value for the replaced string. + Am empty string is permissible. + + + + + Determines if case will be ignored. + The default is . + + + + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + + + + + Replaces tokens in the original input with user-supplied values. + + + + This filter replaces all token surrounded by a beginning and ending + token. The default beginning and ending tokens both default to '@'. The + optional and attributes + can be specified to change either token. By default string + comparisons are case sensitive but this can be changed by setting the + optional attribute to . + + + Tokens are specified by using the element. It is + possible to specify from 1 to n tokens and replacement values. Values can + be any valid NAnt expression. + + + Filters are intended to be used as a element of a . + + + + + Replace all occurrences of the string @DATE@ with the value of property + "TODAY". + + + + + + ]]> + + + + + Replace all occurrences of the string <DATE> with the value of + property "TODAY". + + + + + + ]]> + + + + + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to + + + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream + + + + Reads the next character applying the filter logic without + advancing the current position in the stream. + + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + + + + + Initialize the filter by setting its parameters. + + + + + Finds a token give that we are positioned at a beginning token character. Either a + token replacement is returned or the characters that were read looking for the token. + + A token was not found + A token was found by there is no replacement + The stream ended while looking for the token + Either the replacement token or the characters that were read looking for the token + + + + Returns the next character in the stream replacing the specified character. Using the + allows for the same implementation for Read and Peek + + Delegate to acquire the next character. (Read/Peek) + Char as an int or -1 if at the end of the stream + + + + Compares to characters taking into account. + + + + + + + + + Marks the beginning of a token. The default is "@". + + + + + Marks the end of a token. The default is "@". + + + + + Tokens and replacement values. + + + + + Determines if case will be ignored. + The default is . + + + + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + + + + + Converts tabs to spaces. + + + + The filter replaces tabs in a text file + with spaces. + + + Filters are intended to be used as a element of a . + + + + Replace all tabs with four spaces. + + + ]]> + + + + + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to + + + + Retrieves the next character with moving the position in the stream. + This method is not implemented + + -1 if end of stream otherwise a character + + + + Retrieves the next character in the stream. + + -1 if end of stream otherwise a character + + + + Returns the next character in the stream replacing the specified character. Using the + allows for the same implementation for Read and Peek + + Delegate to acquire the next character. (Read/Peek) + Char as an int or -1 if at the end of the stream + + + + The number of spaces used when converting a tab. The default is + "8". + + + + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + + + + + Functions to return information for a given assembly. + + + + + Gets or sets the that this functionset will + reference. + + + The that this functionset will reference. + + + + + Loads an assembly given its file name or path. + + The name or path of the file that contains the manifest of the assembly. + + The loaded assembly. + + is an empty . + is not found, or the module you are trying to load does not specify a filename extension. + is not a valid assembly. + An assembly or module was loaded twice with two different evidences, or the assembly name is longer than MAX_PATH characters. + + + + Loads an assembly given the long form of its name. + + The long form of the assembly name. + + The loaded assembly. + + is a . + is not found. + + + Determine the location of the Microsoft Access 11 Primary Interop + Assembly by loading it using its fully qualified name, and copy it + to the build directory. + + + + + ]]> + + + + + + Gets the full name of the assembly, also known as the display name. + + The assembly to get the full name for. + + The full name of the assembly, also known as the display name. + + + + + Gets an for the specified assembly. + + The assembly to get an for. + + An for the specified assembly. + + + + + + Gets the physical location, in codebase format, of the loaded file + that contains the manifest. + + The assembly to get the location for. + + The location of the specified assembly. + + + + + Functions that return information about an assembly's identity. + + + + + Gets the location of the assembly as a URL. + + The of the assembly. + + The location of the assembly as a URL. + + + + + + Gets the URI, including escape characters, that represents the codebase. + + The of the assembly. + + The URI, including escape characters, that represents the codebase. + + + + + + Gets the full name of the assembly, also known as the display name. + + The of the assembly. + + The full name of the assembly, also known as the display name. + + + + Output the full name of the nunit.framework assembly to the + build log. + + + + ]]> + + + + + + + Gets the simple, unencrypted name of the assembly. + + The of the assembly. + + The simple, unencrypted name of the assembly. + + + + Output the simple name of the nunit.framework assembly to + the build log. + + + + ]]> + + + + + + + Gets the version of the assembly. + + The of the assembly. + + The version of the assembly. + + + + Output the major version of the nunit.framework assembly + to the build log. + + + + ]]> + + + + + + + + Gets the for a given file. + + The assembly file for which to get the . + + An object representing the given file. + + is an empty . + does not exist. + is not a valid assembly. + + The assembly is not added to this domain. + + + + Output the full name of the nunit.framework assembly to the + build log. + + + + ]]> + + + + + + Converts the specified string representation of a logical value to + its equivalent. + + A string containing the value to convert. + + if is equivalent to + "True"; otherwise, . + + is not equivalent to or . + + + + Converts the specified to its equivalent string + representation. + + A to convert. + + "True" if is , or + "False" if is . + + + + + Converts the argument to an integer. + + value to be converted + converted to integer. The function fails with an exception when the conversion is not possible. + + + + Converts the argument to double + + The value to be converted. + converted to double. The function fails with an exception when the conversion is not possible. + + + + Converts the argument to a string. + + The value to be converted. + + converted to string. The function fails + with an exception when the conversion is not possible. + + + Named method ConvertToString as a static ToString method would break + CLS compliance. + + + + + Converts the argument to a datetime. + + value to be converted + converted to datetime. The function fails with an exception when the conversion is not possible. + + + + Converts the argument to a boolean + + The string value to be converted to boolean. Must be 'true' or 'false'. + + converted to boolean. The function fails + with an exception when the conversion is not possible. + + + + + Gets a that is the current local date and + time on this computer. + + + A whose value is the current date and time. + + + + + Gets the year component of the specified date. + + The date of which to get the year component. + + The year, between 1 and 9999. + + + + + Gets the month component of the specified date. + + The date of which to get the month component. + + The month, between 1 and 12. + + + + + Gets the day of the month represented by the specified date. + + The date of which to get the day of the month. + + The day value, between 1 and 31. + + + + + Gets the hour component of the specified date. + + The date of which to get the hour component. + + The hour, between 0 and 23. + + + + + Gets the minute component of the specified date. + + The date of which to get the minute component. + + The minute, between 0 and 59. + + + + + Gets the seconds component of the specified date. + + The date of which to get the seconds component. + + The seconds, between 0 and 59. + + + + + Gets the milliseconds component of the specified date. + + The date of which to get the milliseconds component. + + The millisecond, between 0 and 999. + + + + + Gets the number of ticks that represent the specified date. + + The date of which to get the number of ticks. + + The number of ticks that represent the date and time of the + specified date. + + + + + Gets the day of the week represented by the specified date. + + The date of which to get the day of the week. + + The day of the week, ranging from zero, indicating Sunday, to six, + indicating Saturday. + + + + + Gets the day of the year represented by the specified date. + + The date of which to get the day of the year. + + The day of the year, between 1 and 366. + + + + + Returns the number of days in the specified month of the specified + year. + + The year. + The month (a number ranging from 1 to 12). + + The number of days in for the specified + . + + is less than 1 or greater than 12. + + + + Returns an indication whether the specified year is a leap year. + + A 4-digit year. + + if is a leap year; + otherwise, . + + + + + Converts the specified string representation of a date and time to + its equivalent. + + A string containing a date and time to convert. + + A equivalent to the date and time contained + in . + + does not contain a valid string representation of a date and time. + + The for the invariant culture is + used to supply formatting information about . + + + + + Converts the specified to its equivalent + string representation. + + A to convert. + + A string representation of formatted using + the general format specifier ("G"). + + + is formatted with the + for the invariant culture. + + + + + Groups a set of functions for dealing with directories. + + + + + Returns the creation date and time of the specified directory. + + The directory for which to obtain creation date and time information. + + The creation date and time of the specified directory. + + The specified directory does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + + + + Returns the date and time the specified directory was last written to. + + The directory for which to obtain write date and time information. + + The date and time the specified directory was last written to. + + The specified directory does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + + + + Returns the date and time the specified directory was last accessed. + + The directory for which to obtain access date and time information. + + The date and time the specified directory was last accessed. + + The specified directory does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + The parameter is in an invalid format. + + + + Gets the current working directory. + + + A containing the path of the current working + directory. + + + + + Retrieves the parent directory of the specified path. + + The path for which to retrieve the parent directory. + + The parent directory, or an empty if + is the root directory, including the root + of a UNC server or share name. + + The directory specified by is read-only. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + The specified path was not found. + + + Copy "readme.txt" from the current working directory to + its parent directory. + + + + + + ]]> + + + + + + Returns the volume information, root information, or both for the + specified path. + + The path for which to retrieve the parent directory. + + A string containing the volume information, root information, or + both for the specified path. + + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + + + + Determines whether the given path refers to an existing directory + on disk. + + The path to test. + + if refers to an + existing directory; otherwise, . + + + Remove directory "test", if it exists. + + + ]]> + + + + + + Functions for requesting information from DNS. + + + + + Gets the host name of the local computer. + + + A string that contains the DNS host name of the local computer. + + An error is encountered when resolving the local host name. + + + + Converts the specified string representation of a number to its + double-precision floating point number equivalent. + + A string containing a number to convert. + + A double-precision floating point number equivalent to the numeric + value or symbol specified in . + + is not a number in a valid format. + represents a number less than or greater than . + + The for the invariant culture is + used to supply formatting information about . + + + + + Converts the specified to its equivalent + string representation. + + A to convert. + + The string representation of formatted + using the general format specifier ("G"). + + + is formatted with the + for the invariant culture. + + + + + Provide information about the current environment and platform. + + + + + Gets the path to the system special folder identified by the + specified enumeration. + + An enumerated constant that identifies a system special folder. + + The path to the specified system special folder, if that folder + physically exists on your computer; otherwise, the empty string (""). + + is not a member of . + + + Copy "out.log" from the project base directory to the + program files directory. + + + + ]]> + + + + + + Gets the NetBIOS name of this local computer. + + + The NetBIOS name of this local computer. + + The name of this computer cannot be obtained. + + + + Gets an object that represents the + current operating system. + + + An object that contains the current + platform identifier and version number. + + + + Output string representation of the current operating system. + + + + ]]> + + If the operating system is Windows 2000, the output is: + + Microsoft Windows NT 5.0.2195.0 + + + + + + + Gets the user name of the person who started the current thread. + + + The name of the person logged on to the system who started the + current thread. + + + + Modify the home directory of the current user on unix-based systems. + + + + + + + + ]]> + + + + + + Returns the value of the specified environment variable. + + The environment variable of which the value should be returned. + + The value of the specified environment variable. + + Environment variable does not exist. + + + + Gets a value indicating whether the specified environment variable + exists. + + The environment variable that should be checked. + + if the environment variable exists; otherwise, + . + + + + Execute a set of tasks only if the "BUILD_DEBUG" environment + variable is set. + + + + ... + + ]]> + + + + + + Gets a object that describes the major, + minor, build, and revision numbers of the Common Language Runtime. + + + A Version object. + + + Output the major version of the CLR. + + + ]]> + + + + + + Groups a set of functions for dealing with files. + + + + + Returns the creation date and time of the specified file. + + The file for which to obtain creation date and time information. + + The creation date and time of the specified file. + + The specified file does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + The parameter is in an invalid format. + + + + Returns the date and time the specified file was last written to. + + The file for which to obtain write date and time information. + + The date and time the specified file was last written to. + + The specified file does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + + + + Returns the date and time the specified file was last accessed. + + The file for which to obtain access date and time information. + + The date and time the specified file was last accessed. + + The specified file does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + The parameter is in an invalid format. + + + + Determines whether the specified file exists. + + The file to check. + + if refers to an + existing file; otherwise, . + + + Execute a set of tasks, if file "output.xml" does not exist. + + + ... + + ]]> + + + + + + Determines whether is more or equal + up-to-date than . + + The file to check against the target file. + The file for which we want to determine the status. + + if is more + or equal up-to-date than ; otherwise, + . + + or is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both of either or exceed the system-defined maximum length. + + + + Gets the length of the file. + + filename + + Length in bytes, of the file named . + + The file specified cannot be found. + + + + Checks if a given file is an assembly. + + The name or path of the file to be checked. + True if the file is a valid assembly, false if it's not or if the assembly seems corrupted (invalid headers or metadata). + is a null . + is an empty . + is not found, or the file you are trying to check does not specify a filename extension. + The caller does not have path discovery permission. + + + + Functions that provide version information for a physical file on disk. + + + + + Returns a representing the version + information associated with the specified file. + + The file to retrieve the version information for. + + A containing information about the file. + + The file specified cannot be found. + + + + Gets the name of the company that produced the file. + + A instance containing version information about a file. + + The name of the company that produced the file. + + + + + Gets the file version of a file. + + A instance containing version information about a file. + + The file version of a file. + + + + + + Gets the name of the product the file is distributed with. + + A instance containing version information about a file. + + The name of the product the file is distributed with. + + + + + Gets the product version of a file. + + A instance containing version information about a file. + + The product version of a file. + + + + + + Converts the specified string representation of a number to its + 32-bit signed integer equivalent. + + A string containing a number to convert. + + A 32-bit signed integer equivalent to the number contained in + . + + is not of the correct format. + represents a number less than or greater than . + + The for the invariant culture is + used to supply formatting information about . + + + + + Converts the specified to its equivalent string + representation. + + A to convert. + + The string representation of , consisting + of a negative sign if the value is negative, and a sequence of + digits ranging from 0 to 9 with no leading zeroes. + + + is formatted with the + for the invariant culture. + + + + + Converts the specified string representation of a number to its + 64-bit signed integer equivalent. + + A string containing a number to convert. + + A 64-bit signed integer equivalent to the number contained in + . + + is not of the correct format. + represents a number less than or greater than . + + The for the invariant culture is + used to supply formatting information about . + + + + + Converts the specified to its equivalent string + representation. + + A to convert. + + The string representation of , consisting + of a negative sign if the value is negative, and a sequence of + digits ranging from 0 to 9 with no leading zeroes. + + + is formatted with the + for the invariant culture. + + + + + Rounds the value to the nearest whole number + + Number to be rounded, can be anything convertible to a double. + + Rounded value. + + + + + Returns the largest whole number less than or equal to the specified + number. + + value to be , can be anything convertible to a double + + The largest whole number less than or equal to the specified number. + + + + + Returns the smallest whole number greater than or equal to the specified number + + value + + The smallest whole number greater than or equal to the specified number. + + + + + Returns the absolute value of the specified number + + value to take the absolute value from + + when is greater + than or equal to zero; otherwise, -. + + + + + Gets the base directory of the appdomain in which NAnt is running. + + + The base directory of the appdomain in which NAnt is running. + + + + + Gets the NAnt assembly. + + + The NAnt assembly. + + + + + Gets the name of the current project. + + + The name of the current project, or an empty + if no name is specified in the build file. + + + + + Gets the form of the build file. + + + The form of the build file, or + an empty if the project is not file backed. + + + + + Gets the local path to the build file. + + + The local path of the build file, or an empty + if the project is not file backed. + + + + + Gets the name of the target that will be executed when no other + build targets are specified. + + + The name of the target that will be executed when no other build + targets are specified, or an empty if no + default target is defined for the project. + + + + + Gets the base directory of the current project. + + + The base directory of the current project. + + + + + Checks whether the specified target exists. + + The target to test. + + if the specified target exists; otherwise, + . + + + + Execute target "clean", if it exists. + + + + + + ]]> + + + + + + Gets the name of the target being executed. + + + A that contains the name of the target + being executed. + + No target is being executed. + + + + Checks whether the specified target has already been executed. + + The target to test. + + if the specified target has already been + executed; otherwise, . + + Target does not exist. + + + + Checks whether the specified task exists. + + The task to test. + + if the specified task exists; otherwise, + . + + + + + Returns the from which the specified task + was loaded. + + The name of the task to get the of. + + The from which the specified task was loaded. + + Task is not available. + + + + Checks whether the specified property exists. + + The property to test. + + if the specified property exists; otherwise, + . + + + + Execute a set of tasks if the "build.debug" property + exists. + + + + + + + + ]]> + + + + + + Checks whether the specified property is read-only. + + The property to test. + + if the specified property is read-only; + otherwise, . + + + Check whether the "debug" property is read-only. + property::is-readonly('debug') + + Property has not been set. + + + + Checks whether the specified property is a dynamic property. + + The property to test. + + if the specified property is a dynamic + property; otherwise, . + + Property has not been set. + + + Check whether the "debug" property is a dynamic property. + + property::is-dynamic('debug') + + + + + Checks whether the specified framework exists, and is valid. + + The framework to test. + + if the specified framework exists ; otherwise, + . + + + + + Checks whether the SDK for the specified framework is installed. + + The framework to test. + + if the SDK for specified framework is installed; + otherwise, . + + + + + + + Gets the identifier of the current target framework. + + + The identifier of the current target framework. + + + + + Gets the identifier of the runtime framework. + + + The identifier of the runtime framework. + + + + + Gets the family of the specified framework. + + The framework of which the family should be returned. + + The family of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the version of the specified framework. + + The framework of which the version should be returned. + + The version of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the description of the specified framework. + + The framework of which the description should be returned. + + The description of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the Common Language Runtime version of the specified framework. + + The framework of which the Common Language Runtime version should be returned. + + The Common Language Runtime version of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the framework directory of the specified framework. + + The framework of which the framework directory should be returned. + + The framework directory of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the assembly directory of the specified framework. + + The framework of which the assembly directory should be returned. + + The assembly directory of the specified framework. + + is not a valid framework identifier. + + + + + + Gets the SDK directory of the specified framework. + + The framework of which the SDK directory should be returned. + + The SDK directory of the specified framework, or an empty + if the SDK of the specified framework is not + installed. + + is not a valid framework identifier. + + + + + + Gets the absolute path of the specified tool for the current + target framework. + + The file name of the tool to search for. + + The absolute path to if found in one of the + configured tool paths; otherwise, an error is reported. + + could not be found in the configured tool paths. + + + The configured tool paths are scanned in the order in which they + are defined in the framework configuration. + + + The file name of the tool to search should include the extension. + + + + Use gacutil to install an assembly in the GAC. + + + + + + ]]> + + + + + + Gets the runtime engine of the specified framework. + + The framework of which the runtime engine should be returned. + + The full path to the runtime engine of the specified framework, or + an empty if no runtime engine is defined + for the specified framework. + + is not a valid framework identifier. + + + + + + Checks whether the specified framework is valid. + + The framework to check. + is not a valid framework identifier. + + + + Gets the name of the platform on which NAnt is running. + + + The name of the platform on which NAnt is running. + + + + + Checks whether NAnt is running on the win32 platform. + + + if NAnt is running on the win32 platform; + otherwise, . + + + + + Checks whether NAnt is running on unix. + + + if NAnt is running on unix; + otherwise, . + + + + + Functions that return information about an operating system. + + + + + Gets a value that identifies the operating + system platform. + + The operating system. + + value that identifies the operating system + platform. + + + + + + Gets a object that identifies this operating + system. + + The operating system. + + A object that describes the major version, + minor version, build, and revision of the operating system. + + + + + + Converts the value of the specified operating system to its equivalent + representation. + + The operating system. + + The representation of + . + + + + Output string representation of the current operating system. + + + + ]]> + + If the operating system is Windows 2000, the output is: + + Microsoft Windows NT 5.0.2195.0 + + + + + + + Returns the fully qualified path. + + The file or directory for which to obtain absolute path information. + + A string containing the fully qualified location of , + such as "C:\MyFile.txt". + + is a zero-length string, contains only white space, or contains one or more invalid characters. + contains a colon (":"). + The specified path, file name, or both exceed the system-defined maximum length. + + + + Combines two paths. + + first path + second path + + A string containing the combined paths. If one of the specified paths + is a zero-length string, this method returns the other path. If + contains an absolute path, this method + returns . + + or contain one or more invalid characters. + + + + Changes the extension of the path string. + + The path information to modify. The path cannot contain any of the characters + defined in InvalidPathChars. + The new extension (with a leading period). Specify a null reference + to remove an existing extension from . + + + A string containing the modified path information. + + + On Windows-based desktop platforms, if is + an empty , the path information is returned + unmodified. If has no extension, the returned + path contains + appended to the end of . + + + + For more information see the documentation. + + contains one or more invalid characters. + + + + Returns the directory information for the specified path string. + + The path of a file or directory. + + A containing directory information for + , or an empty if + denotes a root directory, or does not + contain directory information. + + contains invalid characters, is empty, or contains only white spaces. + + + + Returns the extension for the specified path string. + + The path string from which to get the extension. + + A containing the extension of the specified + (including the "."), or an empty + if does not have + extension information. + + contains one or more invalid characters. + + + + Returns the filename for the specified path string. + + The path string from which to obtain the file name and extension. + + + A consisting of the characters after the last + directory character in path. + + + If the last character of is a directory or + volume separator character, an empty is returned. + + + contains one or more invalid characters. + + + + Returns the filename without extension for the specified path string. + + The path of the file. + + A containing the returned + by , minus the last period (.) and all + characters following it. + + contains one or more invalid characters. + + + + Gets the root directory of the specified path. + + The path from which to obtain root directory information. + + A containing the root directory of + , such as "C:\", or an empty + if does not contain root directory information. + + contains invalid characters, or is empty. + + + + Returns a uniquely named zero-byte temporary file on disk and returns the full path to that file. + + + A containing the name of the temporary file. + + + + + Gets the path to the temporary directory. + + + A containing the path information of a + temporary directory. + + + + + Determines whether a path string includes an extension. + + The path to search for an extension. + + . if the characters that follow the last + directory separator or volume separator in the + include a period (.) followed by one or more characters; + otherwise, . + + contains one or more invalid characters. + + + + Determines whether a path string is absolute. + + The path to test. + + if path contains an absolute ; + otherwise, . + + contains one or more invalid characters. + + + + Gets the value of a variable for the specified package. + + The package for which the variable should be retrieved. + The name of the variable. + + The value of variable for the specified + package. + + pkg-config could not be started. + does not exist. + + + + Gets the link flags required to compile the package, including all + its dependencies. + + The package for which the link flags should be retrieved. + + The link flags required to compile the package. + + pkg-config could not be started. + does not exist. + + + + Gets the compile flags required to compile the package, including all + its dependencies. + + The package for which the compile flags should be retrieved. + + The pre-processor and compile flags required to compile the package. + + pkg-config could not be started. + does not exist. + + + + Determines the version of the given package. + + The package to get the version of. + + The version of the given package. + + pkg-config could not be started. + does not exist. + + + + Determines whether the given package is at least version + . + + The package to check. + The version the package should at least have. + + if the given package is at least version + ; otherwise, . + + pkg-config could not be started. + + + + Determines whether the given package is exactly version + . + + The package to check. + The version the package should have. + + if the given package is exactly version + ; otherwise, . + + pkg-config could not be started. + + + + Determines whether the given package is at no newer than version + . + + The package to check. + The version the package should maximum have. + + if the given package is at no newer than + version ; otherwise, . + + pkg-config could not be started. + + + + Determines whether the given package is between two versions. + + The package to check. + The version the package should at least have. + The version the package should maximum have. + + if the given package is between + and ; otherwise, . + + pkg-config could not be started. + + + + Determines whether the given package exists. + + The package to check. + + if the package exists; otherwise, + . + + pkg-config could not be started. + + + + Runs pkg-config with the specified arguments and returns a + based on the exit code. + + The arguments to pass to pkg-config. + + if pkg-config exited with exit code 0; + otherwise, + + + + + Runs pkg-config with the specified arguments and returns the result + as a . + + The arguments to pass to pkg-config. + + The result of running pkg-config with the specified arguments. + + + + + Factory method to return a new instance of ExecTask + + + + + + + Returns the length of the specified string. + + input string + + The string's length. + + + string::get-length('foo') ==> 3 + + + string::get-length('') ==> 0 + + + + + Returns a substring of the specified string. + + input string + position of the start of the substring + the length of the substring + + + If the is greater than zero, the + function returns a substring starting at character position + with a length of + characters. + + + If the is equal to zero, the function + returns an empty string. + + + or is less than zero. + is greater than the length of . + plus indicates a position not within . + + string::substring('testing string', 0, 4) ==> 'test' + + + string::substring('testing string', 8, 3) ==> 'str' + + + string::substring('testing string', 8, 0) ==> '' + + + string::substring('testing string', -1, 5) ==> ERROR + + + string::substring('testing string', 8, -1) ==> ERROR + + + string::substring('testing string', 5, 17) ==> ERROR + + + + + Tests whether the specified string starts with the specified prefix + string. + + test string + prefix string + + when is a prefix for + the string . Meaning, the characters at the + beginning of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::starts-with('testing string', 'test') ==> true + + + string::starts-with('testing string', 'testing') ==> true + + + string::starts-with('testing string', 'string') ==> false + + + string::starts-with('test', 'testing string') ==> false + + + + + Tests whether the specified string ends with the specified suffix + string. + + test string + suffix string + + when is a suffix for + the string . Meaning, the characters at the + end of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::ends-with('testing string', 'string') ==> true + + + string::ends-with('testing string', '') ==> true + + + string::ends-with('testing string', 'bring') ==> false + + + string::ends-with('string', 'testing string') ==> false + + + + + Returns the specified string converted to lowercase. + + input string + + The string in lowercase. + + + The casing rules of the invariant culture are used to convert the + to lowercase. + + + string::to-lower('testing string') ==> 'testing string' + + + string::to-lower('Testing String') ==> 'testing string' + + + string::to-lower('Test 123') ==> 'test 123' + + + + + Returns the specified string converted to uppercase. + + input string + + The string in uppercase. + + + The casing rules of the invariant culture are used to convert the + to uppercase. + + + string::to-upper('testing string') ==> 'TESTING STRING' + + + string::to-upper('Testing String') ==> 'TESTING STRING' + + + string::to-upper('Test 123') ==> 'TEST 123' + + + + + Returns a string corresponding to the replacement of a given string + with another in the specified string. + + input string + A to be replaced. + A to replace all occurrences of . + + A equivalent to but + with all instances of replaced with + . + + is an empty string. + + This function performs a word (case-sensitive and culture-sensitive) + search to find . + + + string::replace('testing string', 'test', 'winn') ==> 'winning string' + + + string::replace('testing string', 'foo', 'winn') ==> 'testing string' + + + string::replace('testing string', 'ing', '') ==> 'test str' + + + string::replace('banana', 'ana', 'ana') ==> 'banana' + + + + + Tests whether the specified string contains the given search string. + + The string to search. + The string to locate within . + + if is found in + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::contains('testing string', 'test') ==> true + + + string::contains('testing string', '') ==> true + + + string::contains('testing string', 'Test') ==> false + + + string::contains('testing string', 'foo') ==> false + + + + + Returns the position of the first occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The lowest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + will always be 0. + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::index-of('testing string', 'test') ==> 0 + + + string::index-of('testing string', '') ==> 0 + + + string::index-of('testing string', 'Test') ==> -1 + + + string::index-of('testing string', 'ing') ==> 4 + + + + + Returns the position of the last occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The highest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + is the last index position in . + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::last-index-of('testing string', 'test') ==> 0 + + + string::last-index-of('testing string', '') ==> 13 + + + string::last-index-of('testing string', 'Test') ==> -1 + + + string::last-index-of('testing string', 'ing') ==> 11 + + + + + Returns the given string left-padded to the given length. + + The that needs to be left-padded. + The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. + A Unicode padding character. + + If the length of is at least + , then a new identical + to is returned. Otherwise, + will be padded on the left with as many + characters as needed to create a length of . + + is less than zero. + + Note that only the first character of + will be used when padding the result. + + + string::pad-left('test', 10, ' ') ==> ' test' + + + string::pad-left('test', 10, 'test') ==> 'tttttttest' + + + string::pad-left('test', 3, ' ') ==> 'test' + + + string::pad-left('test', -4, ' ') ==> ERROR + + + + + Returns the given string right-padded to the given length. + + The that needs to be right-padded. + The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. + A Unicode padding character. + + If the length of is at least + , then a new identical + to is returned. Otherwise, + will be padded on the right with as many + characters as needed to create a length of . + + is less than zero. + + Note that only the first character of + will be used when padding the result. + + + string::pad-right('test', 10, ' ') ==> 'test ' + + + string::pad-right('test', 10, 'abcd') ==> 'testaaaaaa' + + + string::pad-right('test', 3, ' ') ==> 'test' + + + string::pad-right('test', -3, ' ') ==> ERROR + + + + + Returns the given string trimmed of whitespace. + + input string + + The string with any leading or trailing + white space characters removed. + + + string::trim(' test ') ==> 'test' + + + string::trim('\t\tfoo \r\n') ==> 'foo' + + + + + Returns the given string trimmed of leading whitespace. + + input string + + The string with any leading + whites pace characters removed. + + + string::trim-start(' test ') ==> 'test ' + + + string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n' + + + + + Returns the given string trimmed of trailing whitespace. + + input string + + The string with any trailing + white space characters removed. + + + string::trim-end(' test ') ==> ' test' + + + string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo' + + + + + Returns the total number of days represented by the specified + , expressed in whole and fractional days. + + A . + + The total number of days represented by the given . + + + + + Returns the total number of hours represented by the specified + , expressed in whole and fractional hours. + + A . + + The total number of hours represented by the given . + + + + + Returns the total number of minutes represented by the specified + , expressed in whole and fractional minutes. + + A . + + The total number of minutes represented by the given . + + + + + Returns the total number of seconds represented by the specified + , expressed in whole and fractional seconds. + + A . + + The total number of seconds represented by the given . + + + + + Returns the total number of milliseconds represented by the specified + , expressed in whole and fractional milliseconds. + + A . + + The total number of milliseconds represented by the given + . + + + + + Returns the number of whole days represented by the specified + . + + A . + + The number of whole days represented by the given + . + + + + Remove all files that have not been modified in the last 7 days from directory "binaries". + + + + + + + ]]> + + + + + + Returns the number of whole hours represented by the specified + . + + A . + + The number of whole hours represented by the given + . + + + + + Returns the number of whole minutes represented by the specified + . + + A . + + The number of whole minutes represented by the given + . + + + + + Returns the number of whole seconds represented by the specified + . + + A . + + The number of whole seconds represented by the given + . + + + + + Returns the number of whole milliseconds represented by the specified + . + + A . + + The number of whole milliseconds represented by the given + . + + + + + Returns the number of ticks contained in the specified + . + + A . + + The number of ticks contained in the given . + + + + + Returns a that represents a specified number + of days, where the specification is accurate to the nearest millisecond. + + A number of days, accurate to the nearest millisecond. + + A that represents . + + + + + Returns a that represents a specified number + of hours, where the specification is accurate to the nearest + millisecond. + + A number of hours, accurate to the nearest millisecond. + + A that represents . + + + + + Returns a that represents a specified number + of minutes, where the specification is accurate to the nearest + millisecond. + + A number of minutes, accurate to the nearest millisecond. + + A that represents . + + + + + Returns a that represents a specified number + of seconds, where the specification is accurate to the nearest + millisecond. + + A number of seconds, accurate to the nearest millisecond. + + A that represents . + + + + + Returns a that represents a specified number + of milliseconds. + + A number of milliseconds. + + A that represents . + + + + + Returns a that represents a specified time, + where the specification is in units of ticks. + + A number of ticks that represent a time. + + A that represents . + + + + + Constructs a from a time indicated by a + specified string. + + A string. + + A that corresponds to . + + has an invalid format. + At least one of the hours, minutes, or seconds components is outside its valid range. + + + + Converts the specified to its equivalent + string representation. + + A to convert. + + The string representation of . The format + of the return value is of the form: [-][d.]hh:mm:ss[.ff]. + + + + + Gets the value of the major component of a given version. + + A version. + + The major version number. + + + + + + + + Gets the value of the minor component of a given version. + + A version. + + The minor version number. + + + + + + + + Gets the value of the build component of a given version. + + A version. + + The build number, or -1 if the build number is undefined. + + + + + + + + Gets the value of the revision component of a given version. + + A version. + + The revision number, or -1 if the revision number is undefined. + + + + + + + + Converts the specified string representation of a version to + its equivalent. + + A string containing the major, minor, build, and revision numbers, where each number is delimited with a period character ('.'). + + A instance representing the specified + . + + has fewer than two components or more than four components. + A major, minor, build, or revision component is less than zero. + At least one component of does not parse to a decimal integer. + + + + Converts the specified to its equivalent + string representation. + + A to convert. + + The string representation of the values of the major, minor, build, + and revision components of the specified . + + + + + + + + Changes the file attributes of a file or set of files and directories. + + + + does not have the concept of turning + attributes off. Instead you specify all the attributes that you want + turned on and the rest are turned off by default. + + + Refer to the enumeration in the .NET SDK + for more information about file attributes. + + + + + Set the read-only file attribute for the specified file in + the project directory. + + + + ]]> + + + + + Set the normal file attribute for the specified file. + + + + ]]> + + + + + Set the normal file attribute for all executable files in + the current project directory and sub-directories. + + + + + + + + + ]]> + + + + + + Provides the abstract base class for tasks. + + + A task is a piece of code that can be executed. + + + + + Executes the task unless it is skipped. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + + The actual logging is delegated to the project. + + + If the attribute is set on the task and a + message is logged with level , the + priority of the message will be increased to + when the threshold of the build log is . + + + This will allow individual tasks to run in verbose mode while + the build log itself is still configured with threshold + . + + + The threshold of the project is not taken into account to determine + whether a message should be passed to the logging infrastructure, + as build listeners might be interested in receiving all messages. + + + + + + Logs a formatted message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + + The actual logging is delegated to the project. + + + If the attribute is set on the task and a + message is logged with level , the + priority of the message will be increased to . + when the threshold of the build log is . + + + This will allow individual tasks to run in verbose mode while + the build log itself is still configured with threshold + . + + + + + + Determines whether build output is enabled for the given + . + + The to check. + + if messages with the given + should be passed on to the logging infrastructure; otherwise, + . + + + The threshold of the project is not taken into account to determine + whether a message should be passed to the logging infrastructure, + as build listeners might be interested in receiving all messages. + + + + + Initializes the configuration of the task using configuration + settings retrieved from the NAnt configuration file. + + + TO-DO : Remove this temporary hack when a permanent solution is + available for loading the default values from the configuration + file if a build element is constructed from code. + + + + Initializes the task. + + + Initializes the task. + + + Executes the task. + + + + Locates the XML node for the specified attribute in either the + configuration section of the extension assembly or the.project. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + + + + + Determines if task failure stops the build, or is just reported. + The default is . + + + + + Determines whether the task should report detailed build log messages. + The default is . + + + + + If then the task will be executed; otherwise, + skipped. The default is . + + + + + Opposite of . If + then the task will be executed; otherwise, skipped. The default is + . + + + + + The name of the task. + + + + + The prefix used when sending messages to the log. + + + + + Gets or sets the log threshold for this . By + default the threshold of a task is , + causing no messages to be filtered in the task itself. + + + The log threshold level for this . + + + When the threshold of a is higher than the + threshold of the , then all messages will + still be delivered to the build listeners. + + + + + Returns the TaskBuilder used to construct an instance of this + . + + + + + The name of the file which will have its attributes set. This is + provided as an alternate to using the task's fileset. + + + + + All the matching files and directories in this fileset will have + their attributes set. + + + + + Set the archive attribute. The default is . + + + + + Set the hidden attribute. The default is . + + + + + Set the normal file attributes. This attribute is only valid if used + alone. The default is . + + + + + Set the read-only attribute. The default is . + + + + + Set the system attribute. The default is . + + + + + Checks if a resource is available at runtime. + + + + The specified property is set to if the + requested resource is available at runtime, and + if the resource is not available. + + + we advise you to use the following functions instead: + + + + Function + Description + + + + Determines whether the specified file exists. + + + + Determines whether the given path refers to an existing directory on disk. + + + + Checks whether the specified framework exists.. + + + + Checks whether the SDK for the specified framework is installed. + + + + + + Sets the myfile.present property to if the + file is available on the filesystem and if the + file is not available. + + + + ]]> + + + + + Sets the build.dir.present property to + if the directory is available on the filesystem and + if the directory is not available. + + + + ]]> + + + + + Sets the mono-0.21.framework.present property to + if the Mono 0.21 framework is available on the current system and + if the framework is not available. + + + + ]]> + + + + + Sets the net-1.1.frameworksdk.present property to + if the .NET 1.1 Framework SDK is available on the current system and + if the SDK is not available. + + + + ]]> + + + + + + Executes the task. + + + + Sets the property identified by to + when the resource exists and to + when the resource doesn't exist. + + + The availability of the resource could not be evaluated. + + + + Evaluates the availability of a resource. + + + if the resource is available; otherwise, + . + + The availability of the resource could not be evaluated. + + + + Checks if the file specified in the property is + available on the filesystem. + + + when the file exists; otherwise, . + + + + + Checks if the directory specified in the + property is available on the filesystem. + + + when the directory exists; otherwise, . + + + + + Checks if the framework specified in the + property is available on the current system. + + + when the framework is available; otherwise, + . + + + + + Checks if the SDK for the framework specified in the + property is available on the current system. + + + when the SDK for the specified framework is + available; otherwise, . + + + + + The resource which must be available. + + + + + The type of resource which must be present. + + + + + The property that must be set if the resource is available. + + + + + Defines the possible resource checks. + + + + + Determines whether a given file exists. + + + + + Determines whether a given directory exists. + + + + + Determines whether a given framework is available. + + + + + Determines whether a given SDK is available. + + + + + Calls a NAnt target in the current project. + + + + When the is used to execute a target, both that + target and all its dependent targets will be re-executed. + + + To avoid dependent targets from being executed more than once, two + options are available: + + + + + Add an "unless" attribute with value "${target::has-executed('<target name>')}" + to the dependent targets. + + + + + Set the attribute on the + to (recommended). + + + + + + + Call the target "build". + + + + ]]> + + + + + This shows how a project could 'compile' a debug and release build + using a common compile target. + + + + + + + + + + + + + + + + + + ]]> + + + The parameter of the + defaults to , + causing the "init" target to be executed for both + the "debug" and "release" build. + + + This results in the following build log: + + + build: + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = false + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = true + + BUILD SUCCEEDED + + + If the "init" should only be executed once, set the + attribute of the + to . + + + The build log would then look like this: + + + build: + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = false + + compile: + + [echo] compiling with debug = true + + BUILD SUCCEEDED + + + + + + Executes the specified target. + + + + + Makes sure the is not calling its own + parent. + + + + + NAnt target to call. + + + + + Force an execute even if the target has already been executed. The + default is . + + + + + Execute the specified targets dependencies -- even if they have been + previously executed. The default is . + + + + + Copies a file or set of files to a new file or directory. + + + + Files are only copied if the source file is newer than the destination + file, or if the destination file does not exist. However, you can + explicitly overwrite files with the attribute. + + + When a is used to select files to copy, the + attribute must be set. Files that are + located under the base directory of the will + be copied to a directory under the destination directory matching the + path relative to the base directory of the , + unless the attribute is set to + . + + + Files that are not located under the the base directory of the + will be copied directly under to the destination + directory, regardless of the value of the + attribute. + +

Encoding

+ + Unless an encoding is specified, the encoding associated with the + system's current ANSI code page is used. + + + An UTF-8, little-endian Unicode, and big-endian Unicode encoded text + file is automatically recognized, if the file starts with the + appropriate byte order marks. + + + If you employ filters in your copy operation, you should limit the copy + to text files. Binary files will be corrupted by the copy operation. + +
+ + + Copy a single file while changing its encoding from "latin1" to + "utf-8". + + + + ]]> + + + + Copy a set of files to a new directory. + + + + + + + ]]> + + + + + Copy a set of files to a directory, replacing @TITLE@ with + "Foo Bar" in all files. + + + + + + + + + + + + + ]]> + + +
+ + + Initialize new instance of the . + + + + + Checks whether the task is initialized with valid attributes. + + + + + Executes the Copy task. + + A file that has to be copied does not exist or could not be copied. + + + + Actually does the file copies. + + + + + The file to copy. + + + + + The file to copy to. + + + + + The directory to copy to. + + + + + Overwrite existing files even if the destination files are newer. + The default is . + + + + + Ignore directory structure of source directory, copy all files into + a single directory, specified by the + attribute. The default is . + + + + + Copy any empty directories included in the . + The default is . + + + + + Used to select the files to copy. To use a , + the attribute must be set. + + + + + Chain of filters used to alter the file's content as it is copied. + + + + + The encoding to use when reading files. The default is the system's + current ANSI code page. + + + + + The encoding to use when writing the files. The default is + the encoding of the input file. + + + + + The set of files to perform a file operation on. + + + + The key of the is the absolute path of + the destination file and the value is a + holding the path and last write time of the most recently updated + source file that is selected to be copied or moved to the + destination file. + + + On Windows, the is case-insensitive. + + + + + + Holds the absolute paths and last write time of a given file. + + + + + Initializes a new instance of the + class for the specified file and last write time. + + The absolute path of the file. + The last write time of the file. + + + + Gets the absolute path of the current file. + + + The absolute path of the current file. + + + + + Gets the time when the current file was last written to. + + + The time when the current file was last written to. + + + + + Deletes a file, fileset or directory. + + + + Deletes either a single file, all files in a specified directory and + its sub-directories, or a set of files specified by one or more filesets. + + + If the or attribute is + set then the fileset contents will be ignored. To delete the files + in the fileset ommit the and + attributes in the <delete> element. + + + If the specified file or directory does not exist, no error is + reported. + + + Read-only files cannot be deleted. Use the + first to remove the read-only attribute. + + + + Delete a single file. + + + ]]> + + + + + Delete a directory and the contents within. If the directory does not + exist, no error is reported. + + + + ]]> + + + + + Delete a set of files. + + + + + + + + + ]]> + + + + + + Ensures the supplied attributes are valid. + + + + + The file to delete. + + + + + The directory to delete. + + + + + Remove any empty directories included in the . + The default is . + + + + + All the files in the file set will be deleted. + + + + + Controls whether to show the name of each deleted file or directory. + The default is . + + + + + An empty task that allows a build file to contain a description. + + + Set a description. + + This is a description. + ]]> + + + + + + Writes a message to the build log or a specified file. + + + + The message can be specified using the attribute + or as inline content. + + + Macros in the message will be expanded. + + + When writing to a file, the attribute is + ignored. + + + + + Writes a message with level to the build log. + + + + ]]> + + + + + Writes a message with expanded macro to the build log. + + + + ]]> + + + + + Functionally equivalent to the previous example. + + + Base build directory = ${nant.project.basedir} + ]]> + + + + + Writes the previous message to a file in the project directory, + overwriting the file if it exists. + + + Base build directory = ${nant.project.basedir} + ]]> + + + + + + Outputs the message to the build log or the specified file. + + + + + The message to output. + + + + + Gets or sets the inline content that should be output. + + + The inline content that should be output. + + + + + The file to write the message to. + + + + + Determines whether the should append to the + file, or overwrite it. By default, the file will be overwritten. + + + if output should be appended to the file; + otherwise, . The default is + . + + + + + The logging level with which the message should be output. The default + is . + + + + + Executes a system command. + + + + Use of nested element(s) + is advised over the parameter, as + it supports automatic quoting and can resolve relative to absolute + paths. + + + + Ping "nant.sourceforge.net". + + + + + ]]> + + + + + Execute a java application using IKVM.NET that requires the + Apache FOP jars, and a set of custom jars. + + + + + + + + + + + + + + + + + + + + + ]]> + + + Assuming the base directory of the build file is "c:\ikvm-test" and + the value of the "fop.dist.dir" property is "c:\fop", then the value + of the -cp argument that is passed toikvm.exe is + "c:\ikvm-test\conf;c:\fop\build\fop.jar;conf;c:\fop\lib\xercesImpl-2.2.1.jar;c:\fop\lib\avalon-framework-cvs-20020806.jar;c:\fop\lib\batik.jar;c:\ikvm-test\lib\mylib.jar;c:\ikvm-test\lib\otherlib.zip" + on a DOS-based system. + + + + + + Provides the abstract base class for tasks that execute external applications. + + + + When a is applied to the + deriving class and does not return an + absolute path, then the program to execute will first be searched for + in the location specified by . + + + If the program does not exist in that location, then the list of tool + paths of the current target framework will be scanned in the order in + which they are defined in the NAnt configuration file. + + + + + + Defines the exit code that will be returned by + if the process could not be started, or did not exit (in time). + + + + + Will be used to ensure thread-safe operations. + + + + + Starts the external process and captures its output. + + + The external process did not finish within the configured timeout. + -or- + The exit code of the external process indicates a failure. + + + + + Updates the of the specified + . + + The of which the should be updated. + + + + Starts the process and handles errors. + + The that was started. + + + + Reads from the stream until the external program is ended. + + + + + Reads from the stream until the external program is ended. + + + + + Determines the path of the external program that should be executed. + + + A fully qualifies pathname including the program name. + + The task is not available or not configured for the current framework. + + + + The name of the executable that should be used to launch the + external program. + + + The name of the executable that should be used to launch the external + program, or if no name is specified. + + + If available, the configured value in the NAnt configuration + file will be used if no name is specified. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Gets the file to which the standard output should be redirected. + + + The file to which the standard output should be redirected, or + if the standard output should not be + redirected. + + + The default implementation will never allow the standard output + to be redirected to a file. Deriving classes should override this + property to change this behaviour. + + + + + Gets a value indicating whether output will be appended to the + . + + + if output should be appended to the ; + otherwise, . + + + + + Gets the working directory for the application. + + + The working directory for the application. + + + + + The maximum amount of time the application is allowed to execute, + expressed in milliseconds. Defaults to no time-out. + + + + + The command-line arguments for the external program. + + + + + Specifies whether the external program is a managed application + which should be executed using a runtime engine, if configured. + The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + + + + + Specifies whether the external program is a managed application + which should be executed using a runtime engine, if configured. + The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + + + + + Gets or sets the to which standard output + messages of the external program will be written. + + + The to which standard output messages of + the external program will be written. + + + By default, standard output messages wil be written to the build log + with level . + + + + + Gets or sets the to which error output + of the external program will be written. + + + The to which error output of the external + program will be written. + + + By default, error output wil be written to the build log with level + . + + + + + Gets the value that the process specified when it terminated. + + + The code that the associated process specified when it terminated, + or -1000 if the process could not be started or did not + exit (in time). + + + + + Gets the unique identifier for the spawned application. + + + + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + + + + + Gets the command-line arguments, separated by spaces. + + + + + Performs additional checks after the task has been initialized. + + does not hold a valid file name. + + + + Executes the external program. + + + + + The program to execute without command arguments. + + + The path will not be evaluated to a full path using the project + base directory. + + + + + The command-line arguments for the program. These will be + passed as is to the external program. When quoting is necessary, + these must be explictly set as part of the value. Consider using + nested elements instead. + + + + + Environment variables to pass to the program. + + + + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + The working directory will be evaluated relative to the project's + base directory if it is relative. + + + + + + + The name of a property in which the exit code of the program should + be stored. Only of interest if is + . + + + If the exit code of the program is "-1000" then the program could + not be started, or did not exit (in time). + + + + + + Specifies whether the external program should be executed using a + runtime engine, if configured. The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + + + + + Specifies whether the external program is a managed application + which should be executed using a runtime engine, if configured. + The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + The directory the program is in. + + + + The directory the program is in. The default is the project's base + directory. + + + The basedir will be evaluated relative to the project's base + directory if it is relative. + + + + + + The file to which the standard output will be redirected. + + + By default, the standard output is redirected to the console. + + + + + Gets or sets a value indicating whether output should be appended + to the output file. The default is . + + + if output should be appended to the ; + otherwise, . + + + + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + + + + + The name of a property in which the unique identifier of the spawned + application should be stored. Only of interest if + is . + + + + + Exits the current build by throwing a , + optionally printing additional information. + + + + The cause of the build failure can be specified using the + attribute or as inline content. + + + Macros in the message will be expanded. + + + + Exits the current build without giving further information. + + + ]]> + + + + Exits the current build and writes a message to the build log. + + + ]]> + + + + Functionally equivalent to the previous example. + + Something wrong here. + ]]> + + + + + + A message giving further information on why the build exited. + + + Inline content and are mutually exclusive. + + + + + Gets or sets the inline content that should be output in the build + log, giving further information on why the build exited. + + + The inline content that should be output in the build log. + + + Inline content and are mutually exclusive. + + + + + Gets a particular file from a URL source. + + + + Options include verbose reporting and timestamp based fetches. + + + Currently, only HTTP and UNC protocols are supported. FTP support may + be added when more pluggable protocols are added to the System.Net + assembly. + + + The option enables you to control downloads + so that the remote file is only fetched if newer than the local copy. + If there is no local copy, the download always takes place. When a file + is downloaded, the timestamp of the downloaded file is set to the remote + timestamp. + + + This timestamp facility only works on downloads using the HTTP protocol. + + + + + Gets the index page of the NAnt home page, and stores it in the file + help/index.html relative to the project base directory. + + + + ]]> + + + + + Gets the index page of a secured web site using the given credentials, + while connecting using the specified password-protected proxy server. + + + + + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + + + + This is where the work is done + + + + + Sets the timestamp of a given file to a specified time. + + + + + The URL from which to retrieve a file. + + + + + The file where to store the retrieved file. + + + + + If inside a firewall, proxy server/port information + Format: {proxy server name}:{port number} + Example: proxy.mycompany.com:8080 + + + + + The network proxy to use to access the Internet resource. + + + + + The network credentials used for authenticating the request with + the Internet resource. + + + + + Log errors but don't treat as fatal. The default is . + + + + + Conditionally download a file based on the timestamp of the local + copy. HTTP only. The default is . + + + + + The length of time, in milliseconds, until the request times out. + The default is 100000 milliseconds. + + + + + The security certificates to associate with the request. + + + + + Checks the conditional attributes and executes the children if + . + + + + If no conditions are checked, all child tasks are executed. + + + If more than one attribute is used, they are &&'d. The first + to fail stops the check. + + + The order of condition evaluation is, , + , , + . + + + instead of using the deprecated attributes, we advise you to use the + following functions in combination with the + attribute: + + + + Function + Description + + + + Checks whether the specified property exists. + + + + Checks whether the specified target exists. + + + + + Tests the value of a property using expressions. + + + Build release configuration + + ]]> + + + + Tests the the output of a function. + + + + + ]]> + + + + (Deprecated) Check that a target exists. + + + + + + ]]> + + + + (Deprecated) Check existence of a property. + + + + + ]]> + + + + (Deprecated) Check that a property value is true. + + + + + ]]> + + + + + (Deprecated) Check that a property exists and is + (uses multiple conditions). + + + + + + ]]> + + which is the same as + + + + + + + ]]> + + + + + (Deprecated) Check file dates. If myfile.dll is uptodate, + then do stuff. + + + + + + ]]> + + or + + + + + + + + ]]> + + or + + + + + + + + + + + ]]> + + + + + + Executes embedded tasks in the order in which they are defined. + + + + + Automatically exclude build elements that are defined on the task + from things that get executed, as they are evaluated normally during + XML task initialization. + + + + + Creates and executes the embedded (child XML nodes) elements. + + + Skips any element defined by the host that has + a defined. + + + + + Gets a value indicating whether the element is performing additional + processing using the that was use to + initialize the element. + + + , as a is + responsable for creating tasks from the nested build elements. + + + + + The file to compare if uptodate. + + + + + The file to check against for the uptodate file. + + + + + The that contains the comparison files for + the (s) check. + + + + + The that contains the uptodate files for + the (s) check. + + + + + Used to test whether a property is true. + + + + + Used to test whether a property exists. + + + + + Used to test whether a target exists. + + + + + Used to test arbitrary boolean expression. + + + + + The opposite of the if task. + + + Check that a property does not exist. + + + + + ]]> + + Check that a property value is not true. + + + + + ]]> + + + + Check that a target does not exist. + + + + + ]]> + + + + + + Includes an external build file. + + + + This task is used to break your build file into smaller chunks. You + can load a partial build file and have it included into the build file. + + + Any global (project level) tasks in the included build file are executed + when this task is executed. Tasks in target elements are only executed + if that target is executed. + + + The project element attributes are ignored. + + + This task can only be in the global (project level) section of the + build file. + + + This task can only include files from the file system. + + + + + Include a task that fetches the project version from the + GetProjectVersion.include build file. + + + + ]]> + + + + + + Used to check for recursived includes. + + + + + Verifies parameters. + + + + + Build file to include. + + + + + Load a text file into a single property. + + + + Unless an encoding is specified, the encoding associated with the + system's current ANSI code page is used. + + + An UTF-8, little-endian Unicode, and big-endian Unicode encoded text + file is automatically recognized, if the file starts with the appropriate + byte order marks. + + + + + Load file message.txt into property "message". + + + + ]]> + + + + + Load a file using the "latin-1" encoding. + + + + ]]> + + + + + Load a file, replacing all @NOW@ tokens with the current + date/time. + + + + + + + + + + ]]> + + + + + + The file to load. + + + + + The name of the property to save the content to. + + + + + The encoding to use when loading the file. The default is the encoding + associated with the system's current ANSI code page. + + + + + The filterchain definition to use. + + + + + Loads tasks form a given assembly or all assemblies in a given directory + or . + + + + Load tasks from a single assembly. + + + + ]]> + + + + + Scan a single directory for task assemblies. + + + + ]]> + + + + + Use a containing both a directory and an + assembly. + + + + + + + + + ]]> + + + + + + Executes the Load Tasks task. + + Specified assembly or path does not exist. + + + + Validates the attributes. + + Both and are set. + + + + An assembly to load tasks from. + + + + + A directory to scan for task assemblies. + + + + + Used to select which directories or individual assemblies to scan. + + + + + Loops over a set of items. + + + + Can loop over files in directory, lines in a file, etc. + + + The property value is stored before the loop is done, and restored + when the loop is finished. + + + The property is returned to its normal value once it is used. Read-only + parameters cannot be overridden in this loop. + + + + Loops over the files in c:\. + + + + + ]]> + + + + Loops over all files in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over the folders in c:\. + + + + + ]]> + + + + Loops over all folders in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over a list. + + + + + ]]> + + + + + Loops over lines in the file properties.csv, where each line + is of the format name,value. + + + + + + ]]> + + + + + + The NAnt property name(s) that should be used for the current + iterated item. + + + If specifying multiple properties, separate them with a comma. + + + + + The type of iteration that should be done. + + + + + The type of whitespace trimming that should be done. The default + is . + + + + + The source of the iteration. + + + + + The deliminator char. + + + + + Stuff to operate in. Just like the + attribute, but supports more complicated things like a + and such. + + Please remove the attribute if you + are using this element. + + + + + + Tasks to execute for each matching item. + + + + + Do not remove any white space characters. + + + + + Remove all white space characters from the end of the current + item. + + + + + Remove all white space characters from the beginning of the + current item. + + + + + Remove all white space characters from the beginning and end of + the current item. + + + + + Sends an SMTP message. + + + + Text and text files to include in the message body may be specified as + well as binary attachments. + + + + + Sends an email from nant@sourceforge.net to three recipients + with a subject about the attachments. The body of the message will be + the combined contents of all .txt files in the base directory. + All zip files in the base directory will be included as attachments. + The message will be sent using the smtpserver.anywhere.com SMTP + server. + + + + + + + + + + + ]]> + + + + + + Initializes task and ensures the supplied attributes are valid. + + + + + This is where the work is done. + + + + + Reads a text file and returns the content + in a string. + + The file to read content of. + + The content of the specified file. + + + + + Email address of sender. + + + + + Semicolon-separated list of recipient email addresses. + + + + + Semicolon-separated list of CC: recipient email addresses. + + + + + Semicolon-separated list of BCC: recipient email addresses. + + + + + Host name of mail server. The default is localhost. + + + + + Text to send in body of email message. + + + + + Text to send in subject line of email message. + + + + + Format of the message. The default is . + + + + + Files that are transmitted as part of the body of the email message. + + + + + Attachments that are transmitted with the message. + + + + + Creates a directory and any non-existent parent directory if necessary. + + + Create the directory build. + + + ]]> + + + + Create the directory tree one/two/three. + + + ]]> + + + + + + Creates the directory specified by the property. + + The directory could not be created. + + + + The directory to create. + + + + + Moves a file or set of files to a new file or directory. + + + + Files are only moved if the source file is newer than the destination + file, or if the destination file does not exist. However, you can + explicitly overwrite files with the + attribute. + + + A can be used to select files to move. To use + a , the + attribute must be set. + +

Encoding

+ + Unless an encoding is specified, the encoding associated with the + system's current ANSI code page is used. + + + An UTF-8, little-endian Unicode, and big-endian Unicode encoded text + file is automatically recognized, if the file starts with the + appropriate byte order marks. + + + If you employ filters in your move operation, you should limit the + move to text files. Binary files will be corrupted by the move + operation. + +
+ + + Move a single file while changing its encoding from "latin1" to + "utf-8". + + + + ]]> + + + + Move a set of files. + + + + + + + ]]> + + + + + Move a set of files to a directory, replacing @TITLE@ with + "Foo Bar" in all files. + + + + + + + + + + + + + ]]> + + +
+ + + Actually does the file moves. + + + + + The file to move. + + + + + The file to move to. + + + + + The directory to move to. + + + + + Used to select the files to move. To use a , + the attribute must be set. + + + + + Ignore directory structure of source directory, move all files into + a single directory, specified by the + attribute. The default is . + + + + + Chain of filters used to alter the file's content as it is moved. + + + + + Creates an XSD File for all available tasks. + + + + This can be used in conjuntion with the command-line option to do XSD + Schema validation on the build file. + + + + Creates a NAnt.xsd file in the current project directory. + + + ]]> + + + + + + Creates a NAnt Schema for given types + + The output stream to save the schema to. If , writing is ignored, no exception generated. + The list of tasks to generate XML Schema for. + The list of datatypes to generate XML Schema for. + The target namespace to output. + The new NAnt Schema. + + + + Creates a new instance. + + The name of the attribute. + Value indicating whether the attribute should be required. + The new instance. + + + + Creates a new instance. + + The minimum value to allow for this choice + The maximum value to allow, Decimal.MaxValue sets it to 'unbound' + The new instance. + + + + The name of the output file to which the XSD should be written. + + + + + The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd" + + + + + The for which an XSD should be created. If not + specified, an XSD will be created for all available tasks. + + + + + Creates a new instance of the + class. + + Tasks for which a schema should be generated. + Data Types for which a schema should be generated. + The namespace to use. + http://tempuri.org/nant.xsd + + + + + Runs NAnt on a supplied build file, or a set of build files. + + + + By default, all the properties of the current project will be available + in the new project. Alternatively, you can set + to to not copy any properties to the new + project. + + + You can also set properties in the new project from the old project by + using nested property tags. These properties are always passed to the + new project regardless of the setting of . + This allows you to parameterize your subprojects. + + + References to data types can also be passed to the new project, but by + default they are not. If you set the to + , all references will be copied. + + + + + Build a project located in a different directory if the debug + property is not . + + + + ]]> + + + + + Build a project while adding a set of properties to that project. + + + + + + + + + + ]]> + + + + + Build all projects named default.build located anywhere under + the project base directory. + + + + + + + + + + ]]> + + + + + + Validates the element. + + + + + The build file to build. + + + + + The target to execute. To specify more than one target seperate + targets with a space. Targets are executed in order if possible. + The default is to use target specified in the project's default + attribute. + + + + + Used to specify a set of build files to process. + + + + + Specifies whether current property values should be inherited by + the executed project. The default is . + + + + + Specifies whether all references will be copied to the new project. + The default is . + + + + + Specifies a collection of properties that should be created in the + executed project. Note, existing properties with identical names + that are not read-only will be overwritten. + + + + + Sets a property in the current project. + + + NAnt uses a number of predefined properties. + + + + Define a debug property with value . + + + + ]]> + + + + + Use the user-defined debug property. + + + + ]]> + + + + + Define a read-only property. This is just like passing in the param + on the command line. + + + + ]]> + + + + + Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line). + + + + + + + ]]> + + + Executing this build file with the command line option -D:debug=false, + would cause the value specified on the command line to remain unaltered. + + + + + + + + + The name of the NAnt property to set. + + + + + The value to assign to the NAnt property. + + + + + Specifies whether the property is read-only or not. + The default is . + + + + + Specifies whether references to other properties should not be + expanded when the value of the property is set, but expanded when + the property is actually used. By default, properties will be + expanded when set. + + + + + Specifies whether the value of a property should be overwritten if + the property already exists (unless the property is read-only). + The default is . + + + + + Sets project properties based on the evaluatuion of a regular expression. + + + + The attribute must contain one or more + + named grouping constructs, which represents the names of the + properties to be set. These named grouping constructs can be enclosed + by angle brackets (?<name>) or single quotes (?'name'). + + + In the build file, use the XML element to specify <, + and to specify >. + + + The named grouping construct must not contain any punctuation and it + cannot begin with a number. + + + + + Find the last word in the given string and stores it in the property + lastword. + + + + + ]]> + + + + + Split the full filename and extension of a filename. + + + + ]]> + + + + + Split the path and the filename. (This checks for / or \ + as the path separator). + + + + ]]> + + + Results in path=d:\Temp\SomeDir\SomeDir\ and file=bla.xml. + + + + + + Executes the task. + + + + + Represents the regular expression to be evalued. + + + The regular expression to be evalued. + + + The pattern must contain one or more named constructs, which may + not contain any punctuation and cannot begin with a number. + + + + + A comma separated list of options to pass to the regex engine. The + default is . + + + + + Represents the input for the regular expression. + + + The input for the regular expression. + + + + + Sets an environment variable or a whole collection of them. Use an empty + attribute to clear a variable. + + + + Variables will be set for the current NAnt process and all child + processes that NAnt spawns (compilers, shell tools, etc). If the + intention is to only set a variable for a single child process, then + using the and its nested + element might be a better option. + + + Expansion of inline environment variables is performed using the syntax + of the current platform. So on Windows platforms using the string %PATH% + in the attribute will result in the value of + the PATH variable being expanded in place before the variable is set. + + + + Set the MONO_PATH environment variable on a *nix platform. + + + ]]> + + + + Set a collection of environment variables. Note the nested variable used to set var3. + + + + + + + ]]> + + + + Set environment variables using nested path elements. + + + + + + + + + + + + + + + + + ]]> + + + + + + Win32 DllImport for the SetEnvironmentVariable function. + + + + + + + + *nix dllimport for the setenv function. + + + + + + + + + Checks whether the task is initialized with valid attributes. + + + + + Set the environment variables + + + + + Do the actual work here. + + The name of the environment variable. + The value of the environment variable. + + + + The name of a single Environment variable to set + + + + + The literal value for the environment variable. + + + + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + + + + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + + + + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + + + + + A task for sleeping a specified period of time, useful when a build or deployment process + requires an interval between tasks. + + + Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds. + + + ]]> + + + + Sleep 123 milliseconds. + + + ]]> + + + + + + Verify parameters. + + + + + Return time to sleep. + + + + + Sleeps for the specified number of milliseconds. + + Number of milliseconds to sleep. + + + + Hours to add to the sleep time. + + + + + Minutes to add to the sleep time. + + + + + Seconds to add to the sleep time. + + + + + Milliseconds to add to the sleep time. + + + + + Processes a document via XSLT. + + + Create a report in HTML. + + + ]]> + + + + Create a report in HTML, with a param. + + + + + + + ]]> + + + + Create a report in HTML, with a expanded param. + + + + + + + ]]> + + + + Create some code based on a directory of templates. + + + + + + + + + + ]]> + + + + + + Directory in which to store the results. The default is the project + base directory. + + + + + Desired file extension to be used for the targets. The default is + html. + + + + + URI or path that points to the stylesheet to use. If given as path, it can + be relative to the project's basedir or absolute. + + + + + Specifies a single XML document to be styled. Should be used with + the attribute. + + + + + Specifies the output name for the styled result from the + attribute. + + + + + Specifies a group of input files to which to apply the stylesheet. + + + + + XSLT parameters to be passed to the XSLT transformation. + + + + + XSLT extension objects to be passed to the XSLT transformation. + + + + + The network proxy to use to access the Internet resource. + + + + + Sets properties with system information. + + + Sets a number of properties with information about the system environment. The intent of this task is for nightly build logs to have a record of system information so that the build was performed on. + + + Property + Value + + + <>.clr.version + Common Language Runtime version number. + + + <>.env.* + Environment variables (e.g., <>.env.PATH). + + + <>.os.platform + Operating system platform ID. + + + <>.os.version + Operating system version. + + + <>.os + Operating system version string. + + + <>.os.folder.applicationdata + The directory that serves as a common repository for application-specific data for the current roaming user. + + + <>.os.folder.commonapplicationdata + The directory that serves as a common repository for application-specific data that is used by all users. + + + <>.os.folder.commonprogramfiles + The directory for components that are shared across applications. + + + <>.os.folder.desktopdirectory + The directory used to physically store file objects on the desktop. Do not confuse this directory with the desktop folder itself, which is a virtual folder. + + + <>.os.folder.programfiles + The Program Files directory. + + + <>.os.folder.system + The System directory. + + + <>.os.folder.temp + The temporary directory. + + + + When the name of an environment variable is not a valid property name, + the task will fail. In that case, set to + to allow that environment variable to be + skipped. + + + we advise you to use the following functions instead: + + + + Function + Description + + + + Gets a object that identifies this operating system. + + + + Gets the path to a system special folder. + + + + Returns the value of a environment variable. + + + + Gets the path to the temporary directory. + + + + Gets the Common Language Runtime version. + + + + + Register the properties with the default property prefix. + + + ]]> + + + + Register the properties without a prefix. + + + ]]> + + + + Register properties and display a summary. + + + ]]> + + + + + + The string to prefix the property names with. The default is "sys.". + + + + + Sets properties with the current date and time. + + + + By default the displays the current date + and time and sets the following properties: + + + tstamp.date to yyyyMMdd + tstamp.time to HHmm + tstamp.now using the default DateTime.ToString() method + + + To set an additional property with a custom date/time use the + and attributes. + To set a number of additional properties with the exact same date and + time use the nested element (see example). + + + The date and time string displayed by the + uses the computer's default long date and time string format. You + might consider setting these to the + ISO 8601 standard + for date and time notation. + + + + Set the build.date property. + + + ]]> + + + + Set a number of properties for Ant like compatibility. + + + + + + + ]]> + + + + + + The property to receive the date/time string in the given pattern. + + + + The date/time pattern to be used. + + The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns. + + + Format Character + Description Example Format Pattern (en-US) + + dMM/dd/yyyy + Ddddd, dd MMMM yyyy + fdddd, dd MMMM yyyy HH:mm + Fdddd, dd MMMM yyyy HH:mm:ss + gMM/dd/yyyy HH:mm + GMM/dd/yyyy HH:mm:ss + m, MMMMM dd + r, Rddd, dd MMM yyyy HH':'mm':'ss 'GMT' + syyyy'-'MM'-'dd'T'HH':'mm':'ss + tHH:mm + THH:mm:ss + uyyyy'-'MM'-'dd HH':'mm':'ss'Z' + Udddd, dd MMMM yyyy HH:mm:ss + y, Yyyyy MMMM + + The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally. + + + Format + Pattern Description + + dThe day of the month. Single-digit days will not have a leading zero. + ddThe day of the month. Single-digit days will have a leading zero. + dddThe abbreviated name of the day of the week. + ddddThe full name of the day of the week. + MThe numeric month. Single-digit months will not have a leading zero. + MMThe numeric month. Single-digit months will have a leading zero. + MMMThe abbreviated name of the month. + MMMMThe full name of the month. + yThe year without the century. If the year without the century is less than 10, the year is displayed with no leading zero. + yyThe year without the century. If the year without the century is less than 10, the year is displayed with a leading zero. + yyyyThe year in four digits, including the century. + ggThe period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string. + hThe hour in a 12-hour clock. Single-digit hours will not have a leading zero. + hhThe hour in a 12-hour clock. Single-digit hours will have a leading zero. + HThe hour in a 24-hour clock. Single-digit hours will not have a leading zero. + HHThe hour in a 24-hour clock. Single-digit hours will have a leading zero. + mThe minute. Single-digit minutes will not have a leading zero. + mmThe minute. Single-digit minutes will have a leading zero. + sThe second. Single-digit seconds will not have a leading zero. + ssThe second. Single-digit seconds will have a leading zero. + fThe fraction of a second in single-digit precision. The remaining digits are truncated. + ffThe fraction of a second in double-digit precision. The remaining digits are truncated. + fffThe fraction of a second in three-digit precision. The remaining digits are truncated. + ffffThe fraction of a second in four-digit precision. The remaining digits are truncated. + fffffThe fraction of a second in five-digit precision. The remaining digits are truncated. + ffffffThe fraction of a second in six-digit precision. The remaining digits are truncated. + fffffffThe fraction of a second in seven-digit precision. The remaining digits are truncated. + tThe first character in the AM/PM designator. + ttThe AM/PM designator. + zThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8". + zzThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08". + zzzThe full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00". + :The default time separator. + /The default date separator. + \ cPattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". + + + + + + Touches a file or set of files -- corresponds to the Unix touch command. + + + + If the file specified does not exist, the task will create it. + + + + Touch the Main.cs file. The current time is used. + + + ]]> + + + + + Touch all executable files in the project base directory and its + subdirectories. + + + + + + + + + ]]> + + + + + + Ensures the supplied attributes are valid. + + + + + The file to touch. + + + + + Specifies the new modification time of the file(s) in milliseconds + since midnight Jan 1 1970. + + + + + Specifies the new modification time of the file in the format + MM/DD/YYYY HH:MM:SS. + + + + + Used to select files that should be touched. + + + + + Check modification dates on groups of files. + + + If all are same or newer than all , the specified property is set to , otherwise it + is set to . + + + + Check file dates. If myfile.dll is same or newer than myfile.cs, then set myfile.dll.uptodate property + to either or . + + + + + + + + + + + ]]> + + + + + + Property that will be set to or depending on the + result of the date check. + + + + + The that contains list of source files. + + + + + The that contains list of target files. + + + + + Extracts text from an XML file at the location specified by an XPath + expression. + + + + If the XPath expression specifies multiple nodes the node index is used + to determine which of the nodes' text is returned. + + + + + The example provided assumes that the following XML file (App.config) + exists in the current build directory. + + + + + + + + + ]]> + + + + + The example will read the server value from the above + configuration file. + + + + + + + + ]]> + + + + + + Executes the XML peek task. + + + + + Loads an XML document from a file on disk. + + The file name of the file to load the XML document from. + + A document containing + the document object representing the file. + + + + + Gets the contents of the node specified by the XPath expression. + + The XPath expression used to determine which nodes to choose from. + The XML document to select the nodes from. + The node index in the case where multiple nodes satisfy the expression. + + The contents of the node specified by the XPath expression. + + + + + The name of the file that contains the XML document + that is going to be peeked at. + + + + + The index of the node that gets its text returned when the query + returns multiple nodes. + + + + + The property that receives the text representation of the XML inside + the node returned from the XPath expression. + + + + + The XPath expression used to select which node to read. + + + + + Namespace definitions to resolve prefixes in the XPath expression. + + + + + Replaces text in an XML file at the location specified by an XPath + expression. + + + + The location specified by the XPath expression must exist, it will + not create the parent elements for you. However, provided you have + a root element you could use a series of the tasks to build the + XML file up if necessary. + + + + + Change the server setting in the configuration from testhost.somecompany.com + to productionhost.somecompany.com. + + XML file: + + + + + + + + ]]> + + Build fragment: + + + ]]> + + + + + Modify the noNamespaceSchemaLocation in an XML file. + + XML file: + + + + + ]]> + + Build fragment: + + + + + + + ]]> + + + + + + Executes the XML poke task. + + + + + Loads an XML document from a file on disk. + + + The file name of the file to load the XML document from. + + + An containing + the document object model representing the file. + + + + + Given an XML document and an expression, returns a list of nodes + which match the expression criteria. + + + The XPath expression used to select the nodes. + + + The XML document that is searched. + + + An to use for resolving namespaces + for prefixes in the XPath expression. + + + An containing references to the nodes + that matched the XPath expression. + + + + + Given a node list, replaces the XML within those nodes. + + + The list of nodes to replace the contents of. + + + The text to replace the contents with. + + + + + Saves the XML document to a file. + + The XML document to be saved. + The file name to save the XML document under. + + + + The name of the file that contains the XML document that is going + to be poked. + + + + + The XPath expression used to select which nodes are to be modified. + + + + + The value that replaces the contents of the selected nodes. + + + + + Namespace definitions to resolve prefixes in the XPath expression. + + + + + Represents a command-line argument. + + + + When passed to an external application, the argument will be quoted + when appropriate. This does not apply to the + parameter, which is always passed as is. + + + + + A single command-line argument containing a space character. + + + + ]]> + + + + + Two separate command-line arguments. + + + + ]]> + + + + + A single command-line argument with the value \dir;\dir2;\dir3 + on DOS-based systems and /dir:/dir2:/dir3 on Unix-like systems. + + + + ]]> + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified command-line argument. + + + + + Initializes a new instance of the class + with the given file. + + + + + Initializes a new instance of the class + with the given path. + + + + + Returns the argument as a . + + + The argument as a . + + + File and individual path elements will be quoted if necessary. + + + + + Quotes a command line argument if it contains a single quote or a + space. + + The command line argument. + + A quoted command line argument if + contains a single quote or a space; otherwise, + . + + + + + A single command-line argument; can contain space characters. + + + + + The name of a file as a single command-line argument; will be + replaced with the absolute filename of the file. + + + + + The value for a directory-based command-line argument; will be + replaced with the absolute path of the directory. + + + + + The value for a PATH-like command-line argument; you can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references to + environment variables. + + + Individual parts will be replaced with the absolute path, resolved + relative to the project base directory. + + + + + Sets a single command-line argument and treats it like a PATH - ensures + the right separator for the local platform is used. + + + + + List of command-line arguments; will be passed to the executable + as is. + + + + + Indicates if the argument should be passed to the external program. + If then the argument will be passed; + otherwise, skipped. The default is . + + + + + Indicates if the argument should not be passed to the external + program. If then the argument will be + passed; otherwise, skipped. The default is . + + + + + Gets string value corresponding with the argument. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with value + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified value. + + The value of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Provides credentials for password-based authentication schemes. + + + + + Initializes a new instance of the class. + + + + + Returns a instance representing + the current . + + + A instance representing the current + , or if the + credentials should not be used to provide authentication information + to the external resource. + + + + + The domain or computer name that verifies the credentials. + + + + + The password for the user name associated with the credentials. + + + + + The user name associated with the credentials. + + + + + Indicates if the credentials should be used to provide authentication + information to the external resource. If then + the credentials will be passed; otherwise, not. The default is + . + + + + + Indicates if the credentials should not be used to provide authentication + information to the external resource. If then the + credentials will be passed; otherwise, not. The default is + . + + + + + A specialized used for specifying a set of + directories. + + + Hint for supporting tasks that the included directories instead of + files should be used. + + + + + Filesets are groups of files. These files can be found in a directory + tree starting in a base directory and are matched by patterns taken + from a number of patterns. Filesets can appear inside tasks that support + this feature or at the project level, i.e., as children of <project>. + + +

Patterns

+ + As described earlier, patterns are used for the inclusion and exclusion. + These patterns look very much like the patterns used in DOS and UNIX: + + + + + '*' matches zero or more characters + For example: + + *.cs matches .cs, x.cs and FooBar.cs, + but not FooBar.xml (does not end with .cs). + + + + + + '?' matches one character + For example: + + ?.cs matches x.cs, A.cs, but not + .cs or xyz.cs (both don't have one character + before .cs). + + + + + + Combinations of *'s and ?'s are allowed. + + + Matching is done per-directory. This means that first the first directory + in the pattern is matched against the first directory in the path to match. + Then the second directory is matched, and so on. For example, when we have + the pattern /?abc/*/*.cs and the path /xabc/foobar/test.cs, + the first ?abc is matched with xabc, then * is matched + with foobar, and finally *.cs is matched with test.cs. + They all match, so the path matches the pattern. + + + To make things a bit more flexible, we added one extra feature, which makes + it possible to match multiple directory levels. This can be used to match a + complete directory tree, or a file anywhere in the directory tree. To do this, + ** must be used as the name of a directory. When ** is used as + the name of a directory in the pattern, it matches zero or more directories. + For example: /test/** matches all files/directories under /test/, + such as /test/x.cs, or /test/foo/bar/xyz.html, but not /xyz.xml. + + + There is one "shorthand" - if a pattern ends with / or \, then + ** is appended. For example, mypackage/test/ is interpreted as + if it were mypackage/test/**. + +

Case-Sensitivity

+ + By default, pattern matching is case-sensitive on Unix and case-insensitive + on other platforms. The parameter can be used + to override this. + +

Default Excludes

+ + There are a set of definitions that are excluded by default from all + tasks that use filesets. They are: + + + + + **/*~ + + + + + **/#*# + + + + + **/.#* + + + + + **/%*% + + + + + **/CVS + + + + + **/CVS/** + + + + + **/.cvsignore + + + + + **/.svn + + + + + **/.svn/** + + + + + **/_svn + + + + + **/_svn/** + + + + + **/SCCS + + + + + **/SCCS/** + + + + + **/vssver.scc + + + + + **/_vti_cnf/** + + + + + If you do not want these default excludes applied, you may disable them + by setting to . + +
+ + + + Pattern + Match + + + **/CVS/* + + + Matches all files in CVS directories that can be + located anywhere in the directory tree. + + Matches: + + + CVS/Repository + + + org/apache/CVS/Entries + + + org/apache/jakarta/tools/ant/CVS/Entries + + + But not: + + + org/apache/CVS/foo/bar/Entries (foo/bar/ part does not match) + + + + + + org/apache/jakarta/** + + + Matches all files in the org/apache/jakarta directory + tree. + + Matches: + + + org/apache/jakarta/tools/ant/docs/index.html + + + org/apache/jakarta/test.xml + + + But not: + + + org/apache/xyz.java (jakarta/ part is missing) + + + + + + org/apache/**/CVS/* + + + Matches all files in CVS directories that are located + anywhere in the directory tree under org/apache. + + Matches: + + + org/apache/CVS/Entries + + + org/apache/jakarta/tools/ant/CVS/Entries + + + But not: + + + org/apache/CVS/foo/bar/Entries (foo/bar/ part does not match) + + + + + + **/test/** + + + Matches all files that have a test element in their + path, including test as a filename. + + + + + + +
+ + + Initializes a new instance of the class. + + + + + copy constructor + + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Adds a nested set of patterns, or references a standalone patternset. + + + + + Copies all instance data of the to a given + . + + + + + Determines if a file has a more recent last write time than the + given time, or no longer exists. + + A file to check the last write time against. + The datetime to compare against. + + The name of the file that has a last write time greater than + or that no longer exists; + otherwise, . + + + + + Determines if one of the given files has a more recent last write + time than the given time. If one of the given files no longer exists, + the target will be considered out-of-date. + + A collection of filenames to check the last write time against. + The datetime to compare against. + + The name of the first file that has a last write time greater than + ; otherwise, null. + + + + + Indicates whether include and exclude patterns must be treated in a + case-sensitive way. The default is on Unix; + otherwise, . + + + + + When set to , causes the fileset element to + throw a when no files match the + includes and excludes criteria. The default is . + + + + + Indicates whether default excludes should be used or not. + The default is . + + + + + The base of the directory of this fileset. The default is the project + base directory. + + + + + Gets the collection of include patterns. + + + + + Gets the collection of exclude patterns. + + + + + Gets the collection of files that will be added to the + without pattern matching or checking if the + file exists. + + + + + Gets the collection of file names that match the fileset. + + + A collection that contains the file names that match the + . + + + + + Gets the collection of directory names that match the fileset. + + + A collection that contains the directory names that match the + . + + + + + Gets the collection of directory names that were scanned for files. + + + A collection that contains the directory names that were scanned for + files. + + + + + The items to include in the fileset. + + + + + The items to include in the fileset. + + + + + The items to exclude from the fileset. + + + + + The items to exclude from the fileset. + + + + + The files from which a list of patterns or files to include should + be obtained. + + + + + The files from which a list of patterns or files to include should + be obtained. + + + + + The files from which a list of patterns or files to exclude should + be obtained. + + + + + Determines the most recently modified file in the fileset (by LastWriteTime of the ). + + + The of the file that has the newest (closest to present) last write time. + + + + + The pattern or file name to exclude. + + + + + If then the pattern will be excluded; + otherwise, skipped. The default is . + + + + + Opposite of . If + then the pattern will be excluded; otherwise, skipped. The default + is . + + + + + If then the file name will be added to + the without pattern matching or checking + if the file exists. The default is . + + + + + If then the file will be searched for + on the path. The default is . + + + + + The pattern or file name to include. + + + + + If then the pattern will be included; + otherwise, skipped. The default is . + + + + + Opposite of . If + then the pattern will be included; otherwise, skipped. The default + is . + + + + + Gets the list of patterns in . + + + + + If then the patterns will be excluded; + otherwise, skipped. The default is . + + + + + Opposite of . If + then the patterns will be excluded; otherwise, skipped. The default + is . + + + + + The name of a file; each line of this file is taken to be a + pattern. + + + + + If then the patterns in the include file + will be added to the without pattern + matching or checking if the file exists. The default is + . + + + + + If then the patterns in the include file + will be searched for on the path. The default is . + + + + + If then the patterns will be included; + otherwise, skipped. The default is . + + + + + Opposite of . If + then the patterns will be included; otherwise, skipped. The default + is . + + + + + Initializes a new instance of the class. + + + + + Copy constructor for . Required in order to + assign references of type where + is used. + + A instance to create a from. + + + + Represents an environment variable. + + + + + Initializes a instance with the + specified name and value. + + The name of the environment variable. + The value of the environment variable. + + + + Initializes a instance. + + + + + The name of the environment variable. + + + + + The literal value for the environment variable. + + + + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + + + + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + + + + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + + + + + Sets a single environment variable and treats it like a PATH - + ensures the right separator for the local platform is used. + + + + + Gets the value of the environment variable. + + + + + Indicates if the environment variable should be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + + + + + Indicates if the environment variable should not be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + + + + + A set of environment variables. + + + + + Environment variable to pass to a program. + + + + + Environment variable to pass to a program. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with value + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + The name of the NAnt property to set. + + + + + The string pattern to use to format the property. + + + + + Indicates if the formatter should be used to format the timestamp. + If then the formatter will be used; + otherwise, skipped. The default is . + + + + + Indicates if the formatter should be not used to format the + timestamp. If then the formatter will be + used; otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Specifies the execution mode for managed applications. + + + + For backward compatibility, the following string values can also be + used in build files: + + + + Value + Corresponding field + + + "true" + + + + "false" + + + + + Even if set to , the operating system can still + run the program as a managed application. + + On Linux this can be done through binfmt_misc, while on + Windows installing the .NET Framework redistributable caused managed + applications to run on the MS CLR by default. + + + + + + Do not threat the program as a managed application. + + + + + Leave it up to the CLR to determine which specific version of + the CLR will be used to run the application. + + + + + Forces an application to run against the currently targeted + version of a given CLR. + + + + + Specialized that also supports + case-insensitive conversion of "true" to + and "false" to + . + + + + + Initializes a new instance of the + class. + + + + + Converts the given object to the type of this converter, using the + specified context and culture information. + + An that provides a format context. + A object. If a is passed, the current culture is assumed. + The to convert. + + An that represents the converted value. + + + + + Represents an option. + + + + + name, value constructor + + + + + + + Default constructor + + + + + Name of the option. + + + + + Value of the option. The default is . + + + + + Indicates if the option should be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + + + + + Indicates if the option should not be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a for the specified + task is in the collection. + + The name of task for which the should be located in the collection. + + if a for the specified + task is found in the collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the option that should be located in the collection. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represents a nested path element. + + + + + The name of a file to add to the path. Will be replaced with + the absolute path of the file. + + + + + The name of a directory to add to the path. Will be replaced with + the absolute path of the directory. + + + + + A string that will be treated as a path-like string. You can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references + to environment variables. + + + + + If then the entry will be added to the + path; otherwise, skipped. The default is . + + + + + Opposite of . If + then the entry will be added to the path; otherwise, skipped. + The default is . + + + + + Gets the parts of a path represented by this element. + + + A containing the parts of a path + represented by this element. + + + + + + Paths are groups of files and/or directories that need to be passed as a single + unit. The order in which parts of the path are specified in the build file is + retained, and duplicate parts are automatically suppressed. + + + + + Define a global <path> that can be referenced by other + tasks or types. + + + + + + + ]]> + + + + + + Initializes a new instance of the class. + + + + + Invoked by for build + attributes with an underlying type. + + The to be used to resolve relative paths. + The string representing a path. + + + + Returns a textual representation of the path, which can be used as + PATH environment variable definition. + + + A textual representation of the path. + + + + + Defines a set of path elements to add to the current path. + + The to add. + + + + Defines a path element to add to the current path. + + The to add. + + + + Returns all path elements defined by this path object. + + + A list of path elements. + + + + + Splits a PATH (with ; or : as separators) into its parts, while + resolving references to environment variables. + + The to be used to resolve relative paths. + The path to translate. + + A PATH split up its parts, with references to environment variables + resolved and duplicate entries removed. + + + + + Initializes a new instance of the class. + + + + + The name pattern to include/exclude. + + + + + If then the pattern will be used; + otherwise, skipped. The default is . + + + + + If then the pattern will be used; + otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Removes all items from the . + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + A set of patterns, mostly used to include or exclude certain files. + + + + The individual patterns support if and unless attributes + to specify that the element should only be used if or unless a given + condition is met. + + + The and + elements load patterns from a file. When the file is a relative path, + it will be resolved relative to the project base directory in which + the patternset is defined. Each line of this file is taken to be a + pattern. + + + Patterns can be grouped to sets, and later be referenced by their + . + + + When used as a standalone element (global type), any properties that + are referenced will be resolved when the definition is processed, not + when it actually used. Passing a reference to a nested build file + will not cause the properties to be re-evaluated. + + + To improve reuse of globally defined patternsets, avoid referencing + any properties altogether. + + + + + Define a set of patterns that matches all .cs files that do not contain + the text Test in their name. + + + + + + + ]]> + + + + + Define two sets. One holding C# sources, and one holding VB sources. + Both sets only include test sources when the test property is + set. A third set combines both C# and VB sources. + + + + + + + + + + + + + + + + + ]]> + + + + + Define a set from patterns in a file. + + + + + + + ]]> + + + + + Defines a patternset with patterns that are loaded from an external + file, and shows the behavior when that patternset is passed as a + reference to a nested build script. + + + External file "c:\foo\build\service.lst" holding patterns + of source files to include for the Foo.Service assembly: + + + + + Main build script located in "c:\foo\default.build": + + + + + + + + + + + + + + + + ]]> + + Nested build script located in "c:\foo\services\default.build" + which uses the patternset to feed sources files to the C# compiler: + + + + + + + + + + + ]]> + + At the time when the patternset is used in the "service" + build script, the following source files in "c:\foo\services\src" + match the defined patterns: + + + + + You should have observed that: + + + + + although the patternset is used from the "service" + build script, the path to the external file is resolved relative + to the base directory of the "main" build script in + which the patternset is defined. + + + + + the "TraceListener.cs" file is included, even though + the "build.debug" property was changed to false + after the patternset was defined (but before it was passed to + the nested build, and used). + + + + + + + + + Initializes a new instance of the class. + + + + + Adds a nested set of patterns, or references other standalone + patternset. + + The to add. + + + + Defines a single pattern for files to include. + + + + + Loads multiple patterns of files to include from a given file, set + using the parameter. + + + + + Defines a single pattern for files to exclude. + + + + + Loads multiple patterns of files to exclude from a given file, set + using the parameter. + + + + + Contains HTTP proxy settings used to process requests to Internet + resources. + + + + + Initializes a new instance of the class. + + + + + Gets a instance representing the current + . + + + A instance representing the current + , or + if this proxy should not be used to connect to the external resource. + + + + + The name of the proxy host. + + + + + The port number on to use. + + + + + Specifies whether to bypass the proxy server for local addresses. + The default is . + + + + + The credentials to submit to the proxy server for authentication. + + + + + Indicates if the proxy should be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + + + + + Indicates if the proxy should not be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + + + + + Represents an element of which the XML is processed by its parent task + or type. + + + + + Gets the XML that this element represents. + + + + + Gets a value indicating whether the element is performing additional + processing using the that was use to + initialize the element. + + + , as the XML that represents this build + element is processed by the containing task or type. + + + + + ReplaceTokens filter token. + + + + + Token to be replaced. + + + + + New value of token. + + + + + Indicates if the token should be used to replace values. + If then the token will be used; + otherwise, not. The default is . + + + + + Indicates if the token should not be used to replace values. + If then the token will be used; + otherwise, not. The default is . + + + + + Represents an XML namespace. + + + + + The prefix to associate with the namespace. + + + + + The associated XML namespace URI. + + + + + Indicates if the namespace should be added to the . + If then the namespace will be added; + otherwise, skipped. The default is . + + + + + Indicates if the namespace should not be added to the . + list. If then the parameter will be + added; otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with + value is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified prefix. + + The prefix of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represents an XSLT extension object. The object should have a default + parameterless constructor and the return value should be one of the + four basic XPath data types of number, string, Boolean or node set. + + + + + Initializes a new instance of the + class. + + + + + The namespace URI to associate with the extension object. + + + The namespace URI to associate with the extension object, or + if not set. + + + + + The full type name of the XSLT extension object. + + + + + The assembly which contains the XSLT extension object. + + + + + Indicates if the extension object should be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + + + + + Indicates if the extension object should not be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class with the + specified instance. + + + + + Initializes a new instance of the + class with the + specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added + to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the + end of the collection. + + The array of + elements to be added to the end of the collection. + + + + Adds the elements of a + to the end of the collection. + + The + to be added to the end of the collection. + + + + Determines whether a is in the + collection. + + The to locate + in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the + specified value is in the collection. + + The argument value to locate in the + collection. + + if a + with value is found in the collection; + otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the + destination of the elements copied from the collection. The array + must have zero-based indexing. + The zero-based index in + at which copying begins. + + + + Retrieves the index of a specified + object in the collection. + + The object for + which the index is returned. + + The index of the specified . If the + is not currently a member of the + collection, it returns -1. + + + + + Inserts a into the collection at + the specified index. + + The zero-based index at which + should be inserted. + The to + insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire + collection. + + + + + Removes a member from the collection. + + The to remove + from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get + or set. + + + + Gets the with the specified name. + + The name of the + to get. + + + + Enumerates the elements of a + . + + + + + Initializes a new instance of the + class + with the specified . + + The collection that should be + enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represents an XSLT parameter. + + + + + Initializes a new instance of the + class. + + + + + The name of the XSLT parameter. + + + The name of the XSLT parameter, or if + not set. + + + + + The namespace URI to associate with the parameter. + + + The namespace URI to associate with the parameter, or + if not set. + + + + + The value of the XSLT parameter. + + + The value of the XSLT parameter, or if + not set. + + + + + Indicates if the parameter should be added to the XSLT argument list. + If then the parameter will be added; + otherwise, skipped. The default is . + + + + + Indicates if the parameter should not be added to the XSLT argument + list. If then the parameter will be + added; otherwise, skipped. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with + value is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Resolves assemblies by caching assemblies that were loaded. + + + + + Initializes an instanse of the + class. + + + + + Initializes an instanse of the + class in the context of the given . + + + + + Installs the assembly resolver by hooking up to the + event. + + + + + Uninstalls the assembly resolver. + + + + + Resolves an assembly not found by the system using the assembly + cache. + + The source of the event. + A that contains the event data. + + The loaded assembly, or if not found. + + + + + Occurs when an assembly is loaded. The loaded assembly is added + to the assembly cache. + + The source of the event. + An that contains the event data. + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the in which + the is executing + + + + + Holds the loaded assemblies. + + + + + Holds the in which the + is executing. + + + The in which the + is executing or if the + is not executing in the context of a . + + + + + Represents a valid command-line argument. + + + + + Sets the value of the argument on the specified object. + + The object on which the value of the argument should be set. + The argument is required and no value was specified. + + + The matching property is collection-based, but is not initialized + and cannot be written to. + + -or- + + The matching property is collection-based, but has no strongly-typed + Add method. + + -or- + + The matching property is collection-based, but the signature of the + Add method is not supported. + + + + + + Assigns the specified value to the argument. + + The value that should be assigned to the argument. + + Duplicate argument. + -or- + Invalid value. + + + + + Indicates whether the specified is a + . + + + if can be assigned + to ; otherwise, . + + + + + Indicates whether the specified is collection-based. + + + if can be assigned + to and is not backed by a + that can be assigned to ; + otherwise, . + + + + + Indicates whether the specified is an array. + + + if is an array; + otherwise, . + + + + + Gets the property that backs the argument. + + + The property that backs the arguments. + + + + + Gets the underlying of the argument. + + + The underlying of the argument. + + + If the of the argument is a collection type, + this property will returns the underlying type of that collection. + + + + + Gets the long name of the argument. + + The long name of the argument. + + + + Gets the short name of the argument. + + The short name of the argument. + + + + Gets the description of the argument. + + The description of the argument. + + + + Gets a value indicating whether the argument is required. + + + if the argument is required; otherwise, + . + + + + + Gets a value indicating whether a mathing command-line argument + was already found. + + + if a matching command-line argument was + already found; otherwise, . + + + + + Gets a value indicating whether the argument can be specified multiple + times. + + + if the argument may be specified multiple + times; otherwise, . + + + + + Gets a value indicating whether the argument can only be specified once + with a certain value. + + + if the argument should always have a unique + value; otherwise, . + + + + + Gets the of the property to which the argument + is applied. + + + The of the property to which the argument is + applied. + + + + + Gets a value indicating whether the argument is collection-based. + + + if the argument is backed by a + that can be assigned to and is not backed + by a that can be assigned to + ; otherwise, . + + + + + Gets a value indicating whether the argument is a set of name/value + pairs. + + + if the argument is backed by a + that can be assigned to ; otherwise, + . + + + + + Gets a value indicating whether the argument is array-based. + + + if the argument is backed by an array; + otherwise, . + + + + + Gets a value indicating whether the argument is the default argument. + + + if the argument is the default argument; + otherwise, . + + + + + Gets a value indicating whether the argument cannot be combined with + other arguments. + + + if the argument cannot be combined with other + arguments; otherwise, . + + + + + Allows control of command line parsing. + + + + + Initializes a new instance of the class + with the specified argument type. + + Specifies the checking to be done on the argument. + + + + Gets or sets the checking to be done on the argument. + + The checking that should be done on the argument. + + + + Gets or sets the long name of the argument. + + The long name of the argument. + + + + Gets or sets the short name of the argument. + + The short name of the argument. + + + + Gets or sets the description of the argument. + + The description of the argument. + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + The exception that is thrown when one of the command-line arguments provided + is not valid. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a descriptive message. + + A descriptive message to include with the exception. + + + + Initializes a new instance of the class + with a descriptive message and an inner exception. + + A descriptive message to include with the exception. + A nested exception that is the cause of the current exception. + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Used to control parsing of command-line arguments. + + + + + Indicates that this field is required. An error will be displayed + if it is not present when parsing arguments. + + + + + Only valid in conjunction with Multiple. + Duplicate values will result in an error. + + + + + Inidicates that the argument may be specified more than once. + Only valid if the argument is a collection + + + + + Inidicates that if this argument is specified, no other arguments may be specified. + + + + + The default type for non-collection arguments. + The argument is not required, but an error will be reported if it is specified more than once. + + + + + The default type for collection arguments. + The argument is permitted to occur multiple times, but duplicate + values will cause an error to be reported. + + + + + Commandline parser. + + + + + Initializes a new instance of the class + using possible arguments deducted from the specific . + + The from which the possible command-line arguments should be retrieved. + A value indicating whether or not a response file is able to be used. + is a null reference. + + + + Parses an argument list. + + The arguments to parse. + The destination object on which properties will be set corresponding to the specified arguments. + is a null reference. + The of does not match the argument specification that was used to initialize the parser. + + + + Splits a string and removes any empty strings from the + result. Same functionality as the + public string[] Split(char[] separator, StringSplitOptions options) + method in .Net 2.0. Replace with that call when 2.0 is standard. + + + + the array of strings + + + + Read a response file and parse the arguments as usual. + + The response file to load arguments + + + + Parse the argument list using the + + + + + + Returns the that's applied + on the specified property. + + The property of which applied should be returned. + + The that's applied to the + , or a null reference if none was applied. + + + + + Gets a logo banner using version and copyright attributes defined on the + or the + . + + + A logo banner. + + + + + Gets the usage instructions. + + The usage instructions. + + + + Gets a value indicating whether no arguments were specified on the + command line. + + + + + Marks a command-line option as being the default option. When the name of + a command-line argument is not specified, this option will be assumed. + + + + + Initializes a new instance of the class + with the specified argument type. + + Specifies the checking to be done on the argument. + + + + Provides modified version for Copy and Move from the File class that + allow for filter chain processing. + + + + + Copies a file filtering its content through the filter chain. + + The file to copy + The file to copy to + Chain of filters to apply when copying, or is no filters should be applied. + The encoding used to read the soure file. + The encoding used to write the destination file. + + + + Moves a file filtering its content through the filter chain. + + The file to move + The file to move move to + Chain of filters to apply when moving, or is no filters should be applied. + The encoding used to read the soure file. + The encoding used to write the destination file. + + + + Returns a uniquely named empty temporary directory on disk. + + + A representing the temporary directory. + + + + + Combines two path strings. + + The first path. + The second path. + + A string containing the combined paths. If one of the specified + paths is a zero-length string, this method returns the other path. + If contains an absolute path, this method + returns . + + + + On *nix, processing is delegated to . + + + On Windows, this method normalized the paths to avoid running into + the 260 character limit of a path and converts forward slashes in + both and to + the platform's directory separator character. + + + + + + Returns Absolute Path (Fix for 260 Char Limit of Path.GetFullPath(...)) + + The file or directory for which to obtain absolute path information. + Path Resolved + path is a zero-length string, contains only white space or contains one or more invalid characters as defined by . + is . + + + + Returns the home directory of the current user. + + + The home directory of the current user. + + + + + Helper class for determining whether assemblies are located in the + Global Assembly Cache. + + + + + Initializes a new instance of the class in + the context of the given . + + + + + Determines whether an assembly is installed in the Global + Assembly Cache given its file name or path. + + The name or path of the file that contains the manifest of the assembly. + + if is + installed in the Global Assembly Cache; otherwise, + . + + + + To determine whether the specified assembly is installed in the + Global Assembly Cache, the assembly is loaded into a separate + . + + + If the family of the current runtime framework does not match the + family of the current target framework, this method will return + for all assemblies as there's no way to + determine whether a given assembly is in the Global Assembly Cache + for another framework family than the family of the current runtime + framework. + + + + + + Holds the in which assemblies will be loaded + to determine whether they are in the Global Assembly Cache. + + + + + Holds the context of the . + + + + + Holds a list of assembly files for which already has been determined + whether they are located in the Global Assembly Cache. + + + + The key of the is the full path to the + assembly file and the value is a indicating + whether the assembly is located in the Global Assembly Cache. + + + + + + Holds a value indicating whether the object has been disposed. + + + + + Gets the context of the . + + + The context of the . + + + + + Obtains a lifetime service object to control the lifetime policy for + this instance. + + + An object of type used to control the lifetime + policy for this instance. This is the current lifetime service object + for this instance if one exists; otherwise, a new lifetime service + object initialized with a lease that will never time out. + + + + + Determines whether an assembly is installed in the Global + Assembly Cache given its file name or path. + + The name or path of the file that contains the manifest of the assembly. + + if is + installed in the Global Assembly Cache; otherwise, + . + + + + + Provides a set of helper methods related to reflection. + + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Loads the type specified in the type string with assembly qualified name. + + The assembly qualified name of the type to load. + Flag set to to throw an exception if the type cannot be loaded. + + is and + an error is encountered while loading the , or + is not an assembly qualified name. + + + If the cannot be instantiated from the assembly + qualified type name, then we'll try to instantiate the type using its + simple type name from an already loaded assembly with an assembly + name mathing the assembly in the assembly qualified type name. + + + The type loaded or if it could not be loaded. + + + + + Provides resource support to NAnt assemblies. This class cannot + be inherited from. + + + + + Prevents the class from being + instantiated explicitly. + + + + + Registers the assembly to be used as the fallback if resources + aren't found in the local satellite assembly. + + + A that represents the + assembly to register. + + + The following example shows how to register a shared satellite + assembly. + + + + + + + + Returns the value of the specified string resource. + + + A that contains the name of the + resource to get. + + + A that contains the value of the + resource localized for the current culture. + + + The returned resource is localized for the cultural settings of the + current . + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + the cultural settings of the current . + + + + + + + + Returns the value of the specified string resource localized for + the specified culture. + + + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + a specific culture. + + + + + + + + Returns the value of the specified string resource localized for + the specified culture for the specified assembly. + + + A that contains the name of the + resource to get. + + + A that represents + the culture for which the resource is localized. + + + A + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + specific culture and assembly. + + + + + + + + Registers the specified assembly. + + + A that represents the + assembly to register. + + + + + Determines the manifest resource name of the resource holding the + localized strings. + + The name of the assembly. + + The manifest resource name of the resource holding the localized + strings for the specified assembly. + + + The manifest resource name of the resource holding the localized + strings should match the name of the assembly, minus Tasks + suffix. + + + + + Groups a set of useful manipulation and validation + methods. + + + + + Initializes a new instance of the class. + + + Prevents instantiation of the class. + + + + + Determines whether the last character of the given + matches the specified character. + + The string. + The character. + + if the last character of + matches ; otherwise, . + + is . + + + + Indicates whether or not the specified is + or an string. + + The value to check. + + if is + or an empty string (""); otherwise, . + + + + + Converts an empty string ("") to . + + The value to convert. + + if is an empty + string ("") or ; otherwise, . + + + + + Converts to an empty string. + + The value to convert. + + An empty string if is ; + otherwise, . + + + + + Concatenates a specified separator between each + element of a specified , yielding a + single concatenated string. + + A . + A . + + A consisting of the elements of + interspersed with the separator string. + + + + For example if is ", " and the elements + of are "apple", "orange", "grape", and "pear", + returns "apple, orange, + grape, pear". + + + If is , an empty + string () is used instead. + + + + + + Creates a shallow copy of the specified . + + The that should be copied. + + A shallow copy of the specified . + + + + + Thrown whenever an error occurs during the build. + + + + + The location of the exception in the build document (xml file). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a descriptive message. + + A descriptive message to include with the exception. + + + + Initializes a new instance of the class + with the specified descriptive message and inner exception. + + A descriptive message to include with the exception. + A nested exception that is the cause of the current exception. + + + + Initializes a new instance of the class + with a descriptive message and the location in the build file that + caused the exception. + + A descriptive message to include with the exception. + The location in the build file where the exception occured. + + + + Initializes a new instance of the class + with a descriptive message, the location in the build file and an + instance of the exception that is the cause of the current exception. + + A descriptive message to include with the exception. + The location in the build file where the exception occured. + A nested exception that is the cause of the current exception. + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + + Creates and returns a string representation of the current + exception. + + + A string representation of the current exception. + + + + + Gets the raw message as specified when the exception was + constructed. + + + The raw message as specified when the exception was + constructed. + + + + + Gets the location in the build file of the element from which the + exception originated. + + + The location in the build file of the element from which the + exception originated. + + + + + Gets a message that describes the current exception. + + + The error message that explains the reason for the exception. + + + Adds location information to the message, if available. + + + + + Represents the set of command-line options supported by NAnt. + + + + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + + + + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + + + + + Gets or sets the buildfile that should be executed. + + + The buildfile that should be executed. + + + Can be both a file or an URI. + + + + + Gets or sets a value indicating whether more information should be + displayed during the build process. + + + if more information should be displayed; + otherwise, . The default is . + + + + + Gets or sets a value indicating whether debug information should be + displayed during the build process. + + + if debug information should be displayed; + otherwise, . The default is . + + + + + Gets or sets a value indicating whether only error and debug debug messages should be + displayed during the build process. + + + if only error or warning messages should be + displayed; otherwise, . The default is + . + + + + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + + + + + Gets a value indicating whether parent directories should be searched + for a buildfile. + + + if parent directories should be searched for + a build file; otherwise, . The default is + . + + + + + Gets or sets the indentation level of the build output. + + + The indentation level of the build output. The default is 0. + + + + + Gets or sets the list of properties that should be set. + + + The list of properties that should be set. + + + + + Gets or sets the of logger to add to the list + of listeners. + + + The of logger to add to the list of + listeners. + + + The should derive from . + + + + + Gets or sets the name of the file to log output to. + + + The name of the file to log output to. + + + + + Gets a collection containing fully qualified type names of classes + implementating that should be added + to the project as listeners. + + + A collection of fully qualified type names that should be added as + listeners to the . + + + + + Gets a collection of assemblies to load extensions from. + + + A collection of assemblies to load extensions from. + + + + + Gets or sets a value indicating whether help + should be printed. + + + if help should be + printed; otherwise, . The default is + . + + + + + Gets or sets a value indicating whether the logo banner should be + printed. + + + if the logo banner should be printed; otherwise, + . The default is . + + + + + Gets or sets a value indicating whether the NAnt help should be + printed. + + + if NAnt help should be printed; otherwise, + . The default is . + + + + + Gets a collection containing the targets that should be executed. + + + A collection that contains the targets that should be executed. + + + + + Custom configuration section handler for the element. + + + + + This just passed things through. Return the node read from the config file. + + + + + Main entry point to NAnt that is called by the ConsoleStub. + + + + + Starts NAnt. This is the Main entry point. + + Command Line args, or whatever you want to pass it. They will treated as Command Line args. + + The exit code. + + + + + Prints the projecthelp to the console. + + The build file to show help for. + + is loaded and transformed with + ProjectHelp.xslt, which is an embedded resource. + + + + + Gets the file name for the build file in the specified directory. + + The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory. + Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build). + Whether or not to search the parent directories for a build file. + The path to the build file or null if no build file could be found. + + + + Loads the extension assemblies in the current + and scans them for extensions. + + The extension assemblies to load. + The which will be used to output messages to the build log. + + + + Dynamically constructs an instance of + the class specified. + + + + At this point, only looks in the assembly where + is defined. + + + The fully qualified name of the logger that should be instantiated. + Type could not be loaded. + does not implement . + + + + Dynamically constructs an instance of + the class specified. + + + + At this point, only looks in the assembly where + is defined. + + + The fully qualified name of the listener that should be instantiated. + Type could not be loaded. + does not implement . + + + + Add the listeners specified in the command line arguments, + along with the default listener, to the specified project. + + The command-line options. + The to add listeners to. + + + + Spits out generic help info to the console. + + + + + Write the message of the specified and + the inner exceptions to . + + The to write to . + + + + Creates a new instance of the + class for the specified class in the + specified. + + The containing the . + The class representing the . + + + + Gets the name of the class that can be + created using this . + + + The name of the class that can be created + using this . + + + + + Gets the name of the data type which the + can create. + + + The name of the data type which the + can create. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a for the specified + task is in the collection. + + The name of task for which the should be located in the collection. + + if a for + the specified task is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the for the specified task. + + The name of task for which the should be located in the collection. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified capacity. + + + + + Inherits Properties from an existing property + dictionary Instance + + DataType list to inherit + + + + Used for searching filesystem based on given include/exclude rules. + + + Simple client code for testing the class. + + while (true) { + DirectoryScanner scanner = new DirectoryScanner(); + + Console.Write("Scan Basedirectory : "); + string s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.BaseDirectory = s; + + while(true) { + Console.Write("Include pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Includes.Add(s); + } + + while(true) { + Console.Write("Exclude pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Excludes.Add(s); + } + + foreach (string name in scanner.FileNames) + Console.WriteLine("file:" + name); + foreach (string name in scanner.DirectoryNames) + Console.WriteLine("dir :" + name); + + Console.WriteLine(""); + } + + + + + + Initializes a new instance of the . + + + On unix, patterns are matching case-sensitively; otherwise, they + are matched case-insensitively. + + + + + Initializes a new instance of the + specifying whether patterns are to be match case-sensitively. + + Specifies whether patterns are to be matched case-sensititely. + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Uses and search criteria (relative to + or absolute), to search for filesystem objects. + + + + + Parses specified NAnt search patterns for search directories and + corresponding regex patterns. + + In. NAnt patterns. Absolute or relative paths. + Out. Regex patterns. Absolute canonical paths. + Out. Non-regex files. Absolute canonical paths. + In. Whether to allow a pattern to add search directories. + + + + Given a NAnt search pattern returns a search directory and an regex + search pattern. + + Whether this pattern is an include or exclude pattern + NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported) + Out. Absolute canonical path to the directory to be searched + Out. Whether the pattern is potentially recursive or not + Out. Whether this is a regex pattern or not + Out. Regex search pattern (absolute canonical path) + + + + Searches a directory recursively for files and directories matching + the search criteria. + + Directory in which to search (absolute canonical path) + Whether to scan recursively or not + + + + Converts search pattern to a regular expression pattern. + + Search pattern relative to the search directory. + Regular expresssion + + + + Gets or set a value indicating whether or not to use case-sensitive + pattern matching. + + + + + Gets the collection of include patterns. + + + + + Gets the collection of exclude patterns. + + + + + The base directory to scan. The default is the + current directory. + + + + + Gets the list of files that match the given patterns. + + + + + Gets the list of directories that match the given patterns. + + + + + Gets the list of directories that were scanned for files. + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Creates a string representing a list of the strings in the collection. + + + A string that represents the contents. + + + + + Initialize a new instance of the + class specifying whether or not string comparison should be + case-sensitive. + + Specifies whether or not string comparison should be case-sensitive. + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Determines whether the specified string is in the + . + + The string to locate in the . The value can be . + + if value is found in the ; otherwise, . + + + String comparisons within the + are only case-sensitive if is + + + + + + Searches for the specified string and returns the zero-based index + of the first occurrence within the . + + The string to locate. The value can be . + + The zero-based index of the first occurrence of + in the , if found; otherwise, -1. + + + String comparisons within the + are only case-sensitive if is + . + + + + + Gets a value indicating whether string comparison is case-sensitive. + + + A value indicating whether string comparison is case-sensitive. + + + + + Gets the value of the specified property. + + The name of the property to get the value of. + + The value of the specified property. + + + + + Splits an input string into a sequence of tokens used during parsing. + + + + + Available tokens + + + + + Encalsulates information about installed frameworks incuding version + information and directory locations for finding tools. + + + + + Resolves the specified assembly to a full path by matching it + against the reference assemblies. + + The file name of the assembly to resolve (without path information). + + An absolute path to the assembly, or if the + assembly could not be found. + + + Whether the file name is matched case-sensitive depends on the + operating system. + + + + + Searches the list of tool paths of the current framework for the + given file, and returns the absolute path if found. + + The file name of the tool to search for. + + The absolute path to if found in one of the + configured tool paths; otherwise, . + + is . + + + The configured tool paths are scanned in the order in which they + are defined in the framework configuration. + + + The file name of the tool to search should include the extension. + + + + + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + + + + + Gets the name of the framework. + + + The name of the framework. + + + + + Gets the family of the framework. + + + The family of the framework. + + + + + Gets the description of the framework. + + + The description of the framework. + + + + + Gets the version of the framework. + + + The version of the framework. + + + + + Gets the Common Language Runtime version of the framework. + + + The Common Language Runtime version of the framework. + + + + + Gets the Visual Studio version that corresponds with this + framework. + + + The Visual Studio version that corresponds with this framework. + + There is no version of Visual Studio .NET that corresponds with this framework. + + + + Gets the base directory of the framework tools for the framework. + + + The base directory of the framework tools for the framework. + + + + + Gets the runtime information for this framework. + + + The runtime information for the framework or + if no runtime information is configured for the framework. + + + + + Gets the directory where the system assemblies for the framework + are located. + + + The directory where the system assemblies for the framework are + located. + + + + + Gets the directory containing the SDK tools for the framework. + + + The directory containing the SDK tools for the framework or a null + reference if the configured sdk directory does not exist, or is not + valid. + + + + + Gets the used to initialize this framework. + + + The used to initialize this framework. + + + + + Gets the set of assemblies and directories that should scanned for + NAnt tasks, types or functions. + + + The set of assemblies and directories that should be scanned for + NAnt tasks, types or functions. + + + + + Returns a value indicating whether the current framework is valid. + + + if the framework is installed and correctly + configured; otherwise, . + + + + + Gets the . + + + The . + + + The defines the current namespace + scope and provides methods for looking up namespace information. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified capacity. + + + + + Stores the file name, line number and column number to record a position + in a text file. + + + + + Creates a location consisting of a file name, line number and + column number. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + + + + + Creates a location consisting of a file name. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + + + + + Creates an "unknown" location. + + + + Private Init function. + + + + Returns the file name, line number and a trailing space. An error + message can be appended easily. For unknown locations, returns + an empty string. + + + + + Gets a string containing the file name for the location. + + + The file name includes both the file path and the extension. + + + + + Gets the line number for the location. + + + Lines start at 1. Will be zero if not specified. + + + + + Gets the column number for the location. + + + Columns start a 1. Will be zero if not specified. + + + + + Maps XML nodes to the text positions from their original source. + + + + + Initializes a new instance of the class. + + + + + Determines if a file has been loaded by the current project. + + The file to check. + + if the specified file has already been loaded + by the current project; otherwise, . + + + + + Adds an to the map. + + + An can only be added to the map once. + + + + + Returns the in the XML file for the given node. + + + The must be from an + that has been added to the map. + + + + + Represents a position in the build file. + + + + + Initializes a new instance of the + with the speified line and column. + + The line coordinate of the position. + The column coordinate of the position. + + + + The line coordinate of the position. + + + + + The column coordinate of the position. + + + + + Defines the set of levels recognised by the NAnt logging system. + + + + + Designates fine-grained informational events that are most useful + to debug a build process. + + + + + Designates events that offer a more detailed view of the build + process. + + + + + Designates informational events that are useful for getting a + high-level view of the build process. + + + + + Designates potentionally harmful events. + + + + + Designates error events. + + + + + Can be used to suppress all messages. + + + No events should be logged with this . + + + + + Class representing an event occurring during a build. + + + + An event is built by specifying either a project, a task or a target. + + + A level event will only have a + reference. + + + A level event will have and + references. + + + A level event will have , + and references. + + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class for a level event. + + The that emitted the event. + + + + Initializes a new instance of the + class for a level event. + + The that emitted the event. + + + + Initializes a new instance of the + class for a level event. + + The that emitted the event. + + + + Gets or sets the message associated with this event. + + + The message associated with this event. + + + + + Gets or sets the priority level associated with this event. + + + The priority level associated with this event. + + + + + Gets or sets the associated with this event. + + + The associated with this event. + + + + + Gets the that fired this event. + + + The that fired this event. + + + + + Gets the that fired this event. + + + The that fired this event, or a null reference + if this is a level event. + + + + + Gets the that fired this event. + + + The that fired this event, or + if this is a or level + event. + + + + + Represents the method that handles the build events. + + The source of the event. + A that contains the event data. + + + + Instances of classes that implement this interface can register to be + notified when things happen during a build. + + + + + Signals that a build has started. + + The source of the event. + A object that contains the event data. + + This event is fired before any targets have started. + + + + + Signals that the last target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a target has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a task has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a message has been logged. + + The source of the event. + A object that contains the event data. + + + + Interface used by NAnt to log the build output. + + + Depending on the supplied command-line arguments, NAnt will set the + to or a + with a file as backend store. + + + + + Flushes buffered build events or messages to the underlying storage. + + + + + Gets or sets the highest level of message this logger should respond + to. + + The highest level of message this logger should respond to. + + Only messages with a message level higher than or equal to the given + level should actually be written to the log. + + + + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. + + + + + Gets or sets the to which the logger is + to send its output. + + + + + Initializes a new instance of the + class. + + + + + Flushes buffered build events or messages to the underlying storage. + + + + + Signals that a build has started. + + The source of the event. + A object that contains the event data. + + This event is fired before any targets have started. + + + + + Signals that the last target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a target has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a task has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a message has been logged. + + The source of the event. + A object that contains the event data. + + Only messages with a priority higher or equal to the threshold of + the logger will actually be output in the build log. + + + + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The priority of the message to output. + The message to output. + The number of characters that the message should be indented. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The event to output. + + + + Outputs an indented message to the build log if its priority is + greather than or equal to the of the + logger. + + The event to output. + The number of characters that the message should be indented. + + + + Holds a stack of reports for all running builds. + + + + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + + + + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + + + + + Gets or sets the to which the logger is + to send its output. + + + The to which the logger sends its output. + + + + + Used to store information about a build, to allow better reporting to + the user. + + + + + Errors encountered so far. + + + + + Warnings encountered so far. + + + + + The start time of the build process. + + + + + Buffers log messages from DefaultLogger, and sends an e-mail with the + results. + + + The following properties are used to send the mail : + + + Property + Description + + + MailLogger.mailhost + Mail server to use. [default: localhost] + + + MailLogger.from + The address of the e-mail sender. + + + MailLogger.failure.notify + Send build failure e-mails ? [default: true] + + + MailLogger.success.notify + Send build success e-mails ? [default: true] + + + MailLogger.failure.to + The address to send build failure messages to. + + + MailLogger.success.to + The address to send build success messages to. + + + MailLogger.failure.subject + The subject of build failure messages. [default: "Build Failure"] + + + MailLogger.success.subject + The subject of build success messages. [default: "Build Success"] + + + MailLogger.success.attachments + The ID of a fileset holdng set of files to attach when the build is successful. + + + MailLogger.failure.attachments + The ID of a fileset holdng set of files to attach when the build fails. + + + MailLogger.body.encoding + The encoding type of the body of the e-mail message. [default: system's ANSI code page] + + + MailLogger.smtp.username + The name of the user to login to the SMTP server. + + + MailLogger.smtp.password + The password of the specified user. + + + MailLogger.smtp.enablessl + Specifies whether to use SSL to encrypt the connection. [default: false] + + + MailLogger.smtp.port + The SMTP server port to connect to. [default: 25] + + + + + + + Initializes a new instance of the + class. + + + + + Signals that a build has started. + + The source of the event. + A object that contains the event data. + + This event is fired before any targets have started. + + + + + Signals that the last target has finished, and send an e-mail with + the build results. + + The source of the event. + A object that contains the event data. + + + + Receives and buffers log messages. + + The message being logged. + + + + Gets the value of the specified property. + + Properties to obtain value from. + Suffix of property name. "MailLogger" will be prepended internally. + Value returned if property is not present in . + Value indicating whether the property should exist, or have a default value set. + + The value of the specified property; or the default value if the + property is not present in . + + is , and the specified property is not present and no default value has been given. + + + + Buffer in which the message is constructed prior to sending. + + + + + Holds the stack of currently executing projects. + + + + + Contains a strongly typed collection of + objects. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class with the specified instance. + + + + + Initializes a new instance of the + class with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Implements a for writing information to + the NAnt logging infrastructure. + + + + + Initializes a new instance of the class + for the specified with the specified output + level and format provider. + + Determines the indentation level. + The with which messages will be output to the build log. + An object that controls formatting. + + + + Writes a character array to the buffer. + + The character array to write to the text stream. + + + + Writes a string to the buffer. + + + + + + Writes an empty string to the logging infrastructure. + + + + + Writes a string to the logging infrastructure. + + The string to write. If is a null reference, only the line termination characters are written. + + + + Writes out a formatted string using the same semantics as + . + + The formatting string. + The object array to write into format string. + + + + Causes any buffered data to be written to the logging infrastructure. + + + + + Closes the current writer and releases any system resources + associated with the writer. + + + + + Obtains a lifetime service object to control the lifetime policy for + this instance. + + + An object of type used to control the lifetime + policy for this instance. This is the current lifetime service object + for this instance if one exists; otherwise, a new lifetime service + object initialized with a lease that will never time out. + + + + + Gets the in which the output is written. + + + The always writes output in UTF8 + encoding. + + + + + Gets the with which messages will be output to + the build log. + + + + + Used to search for files on the PATH. + + + + The local directory is not searched (since this would already be covered + by normal use of the includes element). + + + Also, advanced pattern matching isn't supported: you need to know the + exact name of the file. + + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Adds a file to the list of files to be scanned for. + + The filename or search pattern to add to the list. + + + + Scans all direcetories in the PATH environment variable for files. + + + List of matching files found in the PATH. + + + + + Scans all directories in the given environment variable for files. + + The environment variable of which the directories should be scanned. + + List of matching files found in the directory of the given + environment variable. + + + + + Creates a shallow copy of the specified . + + The that should be copied. + + A shallow copy of the specified . + + + + + Central representation of a NAnt project. + + + + The method will initialize the project with the build + file specified in the constructor and execute the default target. + + + + + + + + If no target is given, the default target will be executed if specified + in the project. + + + + + + + + + Constant for the "visiting" state, used when traversing a DFS of + target dependencies. + + + + + Constant for the "visited" state, used when traversing a DFS of + target dependencies. + + + + + Holds the logger for this class. + + + + + Holds the default threshold for build loggers. + + + + + Initializes a new class with the given + document, message threshold and indentation level. + + Any valid build format will do. + The message threshold. + The project indentation level. + + + + Initializes a new class with the given + document, message threshold and indentation level, and using + the specified to load internal configuration + settings. + + Any valid build format will do. + The message threshold. + The project indentation level. + The NAnt should use to initialize configuration settings. + + This constructor is useful for developers using NAnt as a class + library. + + + + + Initializes a new class with the given + source, message threshold and indentation level. + + + The full path to the build file. + This can be of any form that accepts. + + The message threshold. + The project indentation level. + + If the source is a uri of form 'file:///path' then use the path part. + + + + + Initializes a new class with the given + source, message threshold and indentation level, and using + the specified to load internal configuration + settings. + + + The full path to the build file. + This can be of any form that accepts. + + The message threshold. + The project indentation level. + The NAnt should use to initialize configuration settings. + is . + + If the source is a uri of form 'file:///path' then use the path part. + + + + + Initializes a as subproject of the specified + . + + + The full path to the build file. + This can be of any form that accepts. + + The parent . + + Optimized for framework initialization projects, by skipping automatic + discovery of extension assemblies and framework configuration. + + + + + Initializes a with + set to , and + set to 0. + + An containing the build script. + + Optimized for framework initialization projects, by skipping automatic + discovery of extension assemblies and framework configuration. + + + + + Dispatches a event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches a event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches a event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches a event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches a event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches the event to the build listeners + for this . + + The source of the event. + A that contains the event data. + + + + Dispatches a event to the build listeners + for this . + + A that contains the event data. + + + + Writes a level message to the build log with + the given . + + The to log at. + The message to log. + + + + Writes a level formatted message to the build + log with the given . + + The to log at. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + + + Writes a task level message to the build log + with the given . + + The from which the message originated. + The to log at. + The message to log. + + + + Writes a level message to the build log with + the given . + + The from which the message orignated. + The level to log at. + The message to log. + + + + Executes the default target. + + + No top level error handling is done. Any + will be passed onto the caller. + + + + + Executes a specific target, and its dependencies. + + The name of the target to execute. + + Global tasks are not executed. + + + + + Executes a specific target. + + The name of the target to execute. + Whether dependencies should be forced to execute + + Global tasks are not executed. + + + + + Executes the default target and wraps in error handling and time + stamping. + + + if the build was successful; otherwise, + . + + + + + Creates a new from the given . + + The definition. + The new instance. + + + + Creates a new from the given + within a . + + The definition. + The owner . + The new instance. + + + + Expands a from known properties. + + The with replacement tokens. + The location in the build file. Used to throw more accurate exceptions. + The expanded and replaced . + + + + Combines the specified path with the of + the to form a full path to file or directory. + + The relative or absolute path. + + A rooted path, or the of the + if the parameter is a null reference. + + + + + Creates the default and attaches it to + the . + + + + + Increases the of the . + + + + + Decreases the of the . + + + + + Detaches the currently attached instances + from the . + + + + + Attaches the specified build listeners to the . + + The instances to attach to the . + + The currently attached instances will + be detached before the new instances + are attached. + + + + + Inits stuff: + TypeFactory: Calls Initialize and AddProject + Log.IndentSize set to 12 + Project properties are initialized ("nant.* stuff set") + + NAnt Props: + nant.filename + nant.version + nant.location + nant.project.name + nant.project.buildfile (if doc has baseuri) + nant.project.basedir + nant.project.default = defaultTarget + + + An representing the project definition. + The project message threshold. + The project indentation level. + Optimization flags. + is . + + + + This method is only meant to be used by the + class and . + + + + + Creates a new based on the project + definition. + + + The full path to the build file. + This can be of any form that accepts. + + + An based on the specified project + definition. + + + + + Configures the platform properties for the current platform. + + NAnt does not support the current platform. + + + + Updates dependent properties when the + is set. + + + + + Topologically sorts a set of targets. + + The name of the root target. The sort is created in such a way that the sequence of targets up to the root target is the minimum possible such sequence. Must not be . + A collection of instances. + + A collection of instances in sorted order. + + There is a cyclic dependecy among the targets, or a named target does not exist. + + + + + Performs a single step in a recursive depth-first-search traversal + of the target dependency tree. + + + The current target is first set to the "visiting" state, and pushed + onto the "visiting" stack. + + + An exception is then thrown if any child of the current node is in + the visiting state, as that implies a circular dependency. The + exception contains details of the cycle, using elements of the + "visiting" stack. + + + If any child has not already been "visited", this method is called + recursively on it. + + + The current target is then added to the ordered list of targets. + Note that this is performed after the children have been visited in + order to get the correct order. The current target is set to the + "visited" state. + + + By the time this method returns, the ordered list contains the + sequence of targets up to and including the current target. + + + The current target to inspect. Must not be . + A collection of instances. + A mapping from targets to states The states in question are "VISITING" and "VISITED". Must not be . + A stack of targets which are currently being visited. Must not be . + The list to add target names to. This will end up containing the complete list of depenencies in dependency order. Must not be . + + A non-existent target is specified + -or- + A circular dependency is detected. + + + + + Builds an appropriate exception detailing a specified circular + dependency. + + The dependency to stop at. Must not be . + A stack of dependencies. Must not be . + + A detailing the specified circular + dependency. + + + + + Gets or sets the indendation level of the build output. + + + The indentation level of the build output. + + + To change the , the + and methods should be used. + + + + + Gets or sets the indentation size of the build output. + + + The indendation size of the build output. + + + + + Gets or sets the default threshold level for build loggers. + + + The default threshold level for build loggers. + + + + + Gets the name of the . + + + The name of the or an empty + if no name is specified. + + + + + Gets or sets the base directory used for relative references. + + + The base directory used for relative references. + + The directory is not rooted. + + + The gets and sets the built-in property + named "nant.project.basedir". + + + + + + Gets the . + + + The . + + + The defines the current namespace + scope and provides methods for looking up namespace information. + + + + + Gets the form of the current project definition. + + + The form of the current project definition. + + + + + Gets a collection of available .NET frameworks. + + + A collection of available .NET frameworks. + + + + + Gets the framework in which NAnt is currently running. + + + The framework in which NAnt is currently running. + + + + + Gets or sets the framework to use for compilation. + + + The framework to use for compilation. + + + We will use compiler tools and system assemblies for this framework + in framework-related tasks. + + + + + Gets the name of the platform on which NAnt is currently running. + + + The name of the platform on which NAnt is currently running. + + + + Possible values are: + + + + win32 + + + unix + + + + NAnt does not support the current platform. + + + + Gets the current target. + + + The current target, or if no target is + executing. + + + + + Gets the path to the build file. + + + The path to the build file, or if the build + document is not file backed. + + + + + Gets the active definition. + + + The active definition. + + + + + Gets the NAnt should use to initialize + configuration settings. + + + The NAnt should use to initialize + configuration settings. + + + + + Gets the name of the target that will be executed when no other + build targets are specified. + + + The name of the target that will be executed when no other + build targets are specified, or if no + default target is specified in the build file. + + + + + Gets a value indicating whether tasks should output more build log + messages. + + + if tasks should output more build log message; + otherwise, . + + + + + The list of targets to build. + + + Targets are built in the order they appear in the collection. If + the collection is empty the default target will be built. + + + + + Gets the properties defined in this project. + + The properties defined in this project. + + + This is the collection of properties that are defined by the system + and property task statements. + + + These properties can be used in expansion. + + + + + + Gets the framework-neutral properties defined in the NAnt + configuration file. + + + The framework-neutral properties defined in the NAnt configuration + file. + + + + This is the collection of read-only properties that are defined in + the NAnt configuration file. + + + These properties can only be used for expansion in framework-specific + and framework-neutral configuration settings. These properties are + not available for expansion in the build file. + + + + + + Gets the instances defined in this project. + + + The instances defined in this project. + + + + This is the collection of instances that + are defined by (eg fileset) declarations. + + + + + + Gets the targets defined in this project. + + + The targets defined in this project. + + + + + Gets the build listeners for this project. + + + The build listeners for this project. + + + + + Allow the project construction to be optimized. + + + Use this with care! + + + + + Do not perform any optimizations. + + + + + The project base directory must not be automatically scanned + for extension assemblies. + + + + + Do not scan the project configuration for frameworks, and + do not configure the runtime and target framework. + + + + + Holds a value indicating whether a scan for tasks, types and functions + has already been performed for the current runtime framework. + + + + + Initializes a new instance of the + class for the given . + + The that should be configured. + + + + Loads and processes settings from the specified + of the configuration file. + + + + + Processes the framework nodes of the given platform node. + + An representing the platform on which NAnt is running. + + + + Reads the list of global properties specified in the NAnt configuration + file. + + An representing global properties. + + + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + + + + + Gets the underlying instance. + + + The underlying instance. + + + + + Gets the . + + + The . + + + The defines the current namespace + scope and provides methods for looking up namespace information. + + + + + Constant for the "visiting" state, used when traversing a DFS of + property references. + + + + + Constant for the "visited" state, used when travesing a DFS of + property references. + + + + + Initializes a new instance of the + class holding properties for the given + instance. + + The project for which the dictionary will hold properties. + + + + Performs additional custom processes before inserting a new element + into the instance. + + The key of the element to insert. + The value of the element to insert. + + + + Performs additional custom processes before removing an element + from the instance. + + The key of the element to remove. + The value of the element to remove. + + + + Performs additional custom processes when validating the element + with the specified key and value. + + The key of the element to validate. + The value of the element to validate. + + + + Adds a property that cannot be changed. + + The name of the property. + The value to assign to the property. + + Properties added with this method can never be changed. Note that + they are removed if the method is called. + + + + + Marks a property as a property of which the value is expanded at + execution time. + + The name of the property to mark as dynamic. + + + + Adds a property to the collection. + + The name of the property. + The value to assign to the property. + + + + Determines whether the specified property is listed as read-only. + + The name of the property to check. + + if the property is listed as read-only; + otherwise, . + + + + + Determines whether the specified property is listed as dynamic. + + The name of the property to check. + + if the property is listed as dynamic; + otherwise, . + + + + + Inherits properties from an existing property dictionary Instance. + + Property list to inherit. + The list of properties to exclude during inheritance. + + + + Expands a from known properties. + + The replacement tokens. + The to pass through for any exceptions. + The expanded and replaced string. + + + + Determines whether a property already exists. + + The name of the property to check. + + if the specified property already exists; + otherwise, . + + + + + Removes the property with the specified name. + + The name of the property to remove. + + + + Expands a from known properties. + + The replacement tokens. + The to pass through for any exceptions. + A mapping from properties to states. The states in question are "VISITING" and "VISITED". Must not be . + A stack of properties which are currently being visited. Must not be . + The expanded and replaced string. + + + + Evaluates the given expression string and returns the result + + + + + + + + + + Checks whether the specified property is deprecated. + + The property to check. + + + + Builds an appropriate exception detailing a specified circular + reference. + + The property reference to stop at. Must not be . + A stack of property references. Must not be . + + A detailing the specified circular + dependency. + + + + + Maintains a list of the property names that are readonly. + + + + + Maintains a list of the property names of which the value is expanded + on usage, not at initalization. + + + + + The project for which the dictionary holds properties. + + + + + Indexer property. + + + + + Gets the project for which the dictionary holds properties. + + + The project for which the dictionary holds properties. + + + + + Initializes a new instance of the class. + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Executes dependent targets first, then the target. + + + + + This indicates whether the target has already executed. + + + + + The name of the target. + + + + Hides to have + return the name of target, not the name of XML element - which + would always be target. + + + Note: Properties are not allowed in the name. + + + + + + If then the target will be executed; + otherwise, skipped. The default is . + + + + + Gets a value indicating whether the target should be executed. + + + if the target should be executed; otherwise, + . + + + + + Opposite of . If + then the target will be executed; otherwise, skipped. The default + is . + + + + + Gets a value indicating whether the target should NOT be executed. + + + if the target should NOT be executed; + otherwise, . + + + + + The description of the target. + + + + + Space separated list of targets that this target depends on. + + + + + A collection of target names that must be executed before this + target. + + + + + Finds a target by name. + + The name of the target to find. + + The with the specified name, or + if no exists with + the given name. + + + + + Gets the names of the targets in the + combined into one list separated by the given . + + + A that contains a list of the names of the + targets in the , separated by + the specified . + + + + + Gets the names of the targets in the + combined into one comma-separated list. + + + A that contains a comma-separated list of the + names of the targets in the . + + + + + Creates a new instance of the class + for the specified class in the specified + . + + The containing the . + The class representing the . + + + + Gets the name of the class that can be created + using this . + + + The name of the class that can be created using + this . + + + + + Gets the name of the task which the + can create. + + + The name of the task which the can + create. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a for the specified + task is in the collection. + + The name of task for which the should be located in the collection. + + if a for the + specified task is found in the collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the for the specified task. + + The name of task for which the should be located in the collection. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Comprises all of the loaded, and available, tasks. + Use these static methods to register, initialize and create a task. + + + + + Scans the given assembly for tasks, types, functions and filters. + + The assembly to scan for tasks, types, functions and filters. + The which will be used to output messages to the build log. + + + + Scans the given assembly for tasks, types, functions and filters. + + The assembly to scan for tasks, types, functions and filters. + The which will be used to output messages to the build log. + + if contains at + least one "extension"; otherwise, . + + + + + Scans the path for any task assemblies and adds them. + + The directory to scan in. + The which will be used to output messages to the build log. + indicating whether scanning of the directory should halt on first error. + + + + Adds any task assemblies in the project base directory + and its tasks subdirectory. + + The project to work from. + + + + Registers the project with , and optionally + scan the for extension assemblies. + + The project to work from. + Specified whether to scan the for extension assemblies. + + + + Looks up a function by name. + + The name of the function to lookup, including namespace prefix. + The in which the function is invoked. + + A representing the function, or + if a function with the given name does not + exist. + + + + + Creates a new instance for the given XML and + . + + The XML to initialize the task with. + The that the belongs to. + + The new instance. + + + + + Scans a given for tasks. + + The containing the to scan. + The to scan. + The which will be used to output messages to the build log. + + if represents a + ; otherwise, . + + + + + Scans a given for data type. + + The containing the to scan. + The to scan. + The which will be used to output messages to the build log. + + if represents a + data type; otherwise, . + + + + + Scans a given for functions. + + The to scan. + The which will be used to output messages to the build log. + + if represents a + valid set of funtions; otherwise, . + + + + + Scans a given for filters. + + The containing the to scan. + The to scan. + The which will be used to output messages to the build log. + + if represents a + ; otherwise, . + + + + + Gets the list of loaded instances. + + + List of loaded instances. + + + + + Gets the list of loaded instances. + + + List of loaded instances. + + + + + Gets the list of loaded instances. + + + List of loaded instances. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class with a descriptive message. + + A descriptive message to include with the exception. + + + + Initializes a new instance of the + class with the specified descriptive message and inner exception. + + A descriptive message to include with the exception. + A nested exception that is the cause of the current exception. + + + + Initializes a new instance of the + class with a descriptive message and the location in the build file + that caused the exception. + + A descriptive message to include with the exception. + The location in the build file where the exception occured. + + + + Initializes a new instance of the + class with a descriptive message, the location in the build file and + an instance of the exception that is the cause of the current + exception. + + A descriptive message to include with the exception. + The location in the build file where the exception occured. + A nested exception that is the cause of the current exception. + + + + Initializes a new instance of the + class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Used to wrap log messages in xml <message/> elements. + + + + + Holds the stack of currently executing projects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + + Populates with the data needed to serialize + the instance. + + The to populate with data. + The destination for this serialization. + + + + Returns the contents of log captured. + + + + + Signals that a build has started. + + The source of the event. + A object that contains the event data. + + This event is fired before any targets have started. + + + + + Signals that the last target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a target has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a target has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a task has started. + + The source of the event. + A object that contains the event data. + + + + Signals that a task has finished. + + The source of the event. + A object that contains the event data. + + This event will still be fired if an error occurred during the build. + + + + + Signals that a message has been logged. + + The source of the event. + A object that contains the event data. + + Only messages with a priority higher or equal to the threshold of + the logger will actually be output in the build log. + + + + + Flushes buffered build events or messages to the underlying storage. + + + + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + + + + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + as it has no meaning in XML format. + + + + + Gets or sets the to which the logger is + to send its output. + + +
+
diff --git a/slips/build/tools/nant/bin/NAnt.DotNetTasks.dll b/slips/build/tools/nant/bin/NAnt.DotNetTasks.dll new file mode 100644 index 0000000..dd7887b Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.DotNetTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.DotNetTasks.xml b/slips/build/tools/nant/bin/NAnt.DotNetTasks.xml new file mode 100644 index 0000000..3b29946 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.DotNetTasks.xml @@ -0,0 +1,5318 @@ + + + + NAnt.DotNetTasks + + + + + Generates an AssemblyInfo file using the attributes given. + + + + Create a C# AssemblyInfo file containing the specified assembly-level + attributes. + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + Create a C# AssemblyInfo file containing an attribute with multiple + named properties by setting the + attribute on the element to + . + + + + + + + + + + + + + + ]]> + + + + + + Generates an AssemblyInfo file. + + + + + Determines whether the specified AssemblyInfo file in the given + needs to be persisted. + + holding the newly generated AssemblyInfo source. + + if the generated AssemblyInfo source needs + to be persisted; otherwise, . + + + + + Name of the AssemblyInfo file to generate. + + + The name of the AssemblyInfo file to generate. + + + + + The code language in which the AssemblyInfo file should be + generated. + + + + + The assembly-level attributes to generate. + + + The assembly-level attributes to generate. + + + + + The namespaces to import. + + + The namespaces to import. + + + + + Assembly files used to locate the types of the specified attributes. + + + + + Defines the supported code languages for generating an AssemblyInfo + file. + + + + + A value for generating C# code. + + + + + A value for generating JScript code. + + + + + A value for generating Visual Basic code. + + + + + Encapsulates functionality to generate a code file with imports + and assembly-level attributes. + + + + + Initializes a new instance of the + for the specified . + + The for which an instance of the class should be initialized. + The for which an instance of the class should be initialized. + + + + Generates code for the specified imports. + + The imports for which code should be generated. + The to which the generated code will be written. + + + + Generates code for the specified assembly attributes. + + The assembly attributes for which code should be generated. + Imports used to resolve the assembly attribute names to fully qualified type names. + Assembly that will be used to resolve the attribute names to instances. + The to which the generated code will be written. + + + + Gets the in which the AssemblyInfo + code will be generated. + + + + + Gets the that will be used to + generate the AssemblyInfo code. + + + + + Responsible for returning the specified value converted to a + accepted by a constructor for a given + . + + + + + Obtains a lifetime service object to control the lifetime policy for + this instance. + + + An object of type used to control the lifetime + policy for this instance. This is the current lifetime service object + for this instance if one exists; otherwise, a new lifetime service + object initialized with a lease that will never time out. + + + + + Retrieves the specified corresponding with the specified + type name from a list of assemblies. + + The collection of assemblies that the type should tried to be instantiated from. + The list of imports that can be used to resolve the typename to a full typename. + The typename that should be used to determine the type to which the specified value should be converted. + The value that should be converted to a typed value. + + + is and the identified by has no default public constructor. + -or- + cannot be converted to a value that's suitable for one of the constructors of the identified by . + -or- + The identified by has no suitable constructor. + -or- + A identified by could not be located or loaded. + + + + + Wraps al.exe, the assembly linker for the .NET Framework. + + + + All specified sources will be embedded using the /embed flag. + Other source types are not supported. + + + + + Create a library containing all icon files in the current directory. + + + + + + + + ]]> + + + + + Create an executable assembly manifest from modules. + + + + + + + + + ]]> + + + + + + Generates an assembly manifest. + + + + + Determines whether the assembly manifest needs compiling or is + uptodate. + + + if the assembly manifest needs compiling; + otherwise, . + + + + + Specifies an algorithm (in hexadecimal) to hash all files in a + multifile assembly except the file that contains the assembly + manifest. The default algorithm is CALG_SHA1. + + + + + Specifies a string for the Company field in the assembly. + + + A string for the Company field in the assembly. + + + If is an empty string (""), the Win32 + Company resource appears as a single space. + + + + + Specifies a string for the Configuration field in the assembly. + + + A string for the Configuration field in the assembly. + + + If is an empty string (""), the Win32 + Configuration resource appears as a single space. + + + + + Specifies a string for the Copyright field in the assembly. + + + A string for the Copyright field in the assembly. + + + If is an empty string (""), the Win32 + Copyright resource appears as a single space. + + + + + The culture string associated with the output assembly. + The string must be in RFC 1766 format, such as "en-US". + + + + Corresponds with the /c[ulture]: flag. + + + + + + Specifies whether the assembly should be partially signed. The default + is . + + + + + Specifies a string for the Description field in the assembly. + + + A string for the Description field in the assembly. + + + If is an empty string (""), the Win32 + Description resource appears as a single space. + + + + + Security evidence file to embed. + + + The security evidence file to embed. + + + + Corresponds with the /e[vidence] flag. + + + + + + Specifies a string for the File Version field in the assembly. + + + A string for the File Version field in the assembly. + + + + + Specifies a value (in hexadecimal) for the Flags field in + the assembly. + + + A value (in hexadecimal) for the Flags field in the assembly. + + + + + Specifies a container that holds a key pair. + + + + + Specifies a file (filename) that contains a key pair or + just a public key to sign an assembly. + + + The complete path to the key file. + + + + Corresponds with the /keyf[ile]: flag. + + + + + + Specifies the fully-qualified name (class.method) of the method to + use as an entry point when converting a module to an executable file. + + + The fully-qualified name (class.method) of the method to use as an + entry point when converting a module to an executable file. + + + + + One or more modules to be compiled into an assembly. + + + + + The name of the output file for the assembly manifest. + + + The complete output path for the assembly manifest. + + + + Corresponds with the /out flag. + + + + + + The target type (one of lib, exe, or winexe). + + + + Corresponds with the /t[arget]: flag. + + + + + + Specifies a string for the Product field in the assembly. + + + A string for the Product field in the assembly. + + + + + Specifies a string for the Product Version field in the assembly. + + + A string for the Product Version field in the assembly. + + + + + The set of resources to embed. + + + + + The set of compiled resources to embed. + + + Do not yet expose this to build authors. + + + + + Indicates whether the assembly linker for a given target framework + supports the "template" option, which takes an assembly from which + to get all options except the culture field. + The default is . + + + TODO: remove this once Mono bug #74814 is fixed. + + + + + Specifies an assembly from which to get all options except the + culture field. + + + The complete path to the assembly template. + + + + Corresponds with the /template: flag. + + + + + + Specifies a string for the Title field in the assembly. + + + A string for the Title field in the assembly. + + + + + Specifies a string for the Trademark field in the assembly. + + + A string for the Trademark field in the assembly. + + + + + Specifies version information for the assembly. The format of the + version string is major.minor.build.revision. + + + + + Icon to associate with the assembly. + + + + + Inserts a Win32 resource (.res file) in the output file. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program or + if the task is not being executed. + + + + + Provides the abstract base class for compiler tasks. + + + + + Contains a list of extensions for all file types that should be treated as + 'code-behind' when looking for resources. Ultimately this will determine + if we use the "namespace+filename" or "namespace+classname" algorithm, since + code-behind will use the "namespace+classname" algorithm. + + + + + Case-insensitive list of valid culture names for this platform. + + + The key of the is the culture name and + the value is . + + + + + Class constructor for . + + + + + Compiles the sources and resources. + + + + + Determines the manifest resource name of the given resource file. + + The containing information that will used to assemble the manifest resource name. + The resource file of which the manifest resource name should be determined. + The logical location of the resource file. + The source file on which the resource file depends. + + The manifest resource name of the specified resource file. + + + + + Determines the manifest resource name of the given resource file. + + The containing information that will used to assemble the manifest resource name. + The resource file of which the manifest resource name should be determined. + + The manifest resource name of the specified resource file. + + + For .resx resources, the name of the dependent is determined by + replacing the extension of the file with the extension of the + source files for the compiler, and removing the culture name from + the file name for localized resources. + + + + + Extracts the associated namespace/classname linkage found in the + given stream. + + The read-only stream of the source file to search. + + The namespace/classname of the source file matching the resource. + + + + + Writes package references to the specified . + + The to which the package references should be written. + + + + Writes list of warnings to (not) treat as errors to the specified + . + + The to which the list of warnings should be written. + + + + Writes list of warnings to suppress to the specified + . + + The to which the list of warnings to suppress should be written. + + + + Writes conditional compilation constants to the specified + . + + The to which the conditional compilation constants should be written. + + + + Writes module references to the specified . + + The to which the module references should be written. + + + + Allows derived classes to provide compiler-specific options. + + The to which the compiler options should be written. + + + + Writes an option using the default output format. + + The to which the compiler options should be written. + The name of the option which should be passed to the compiler. + + + + Writes an option and its value using the default output format. + + The to which the compiler options should be written. + The name of the option which should be passed to the compiler. + The value of the option which should be passed to the compiler. + + The combination of and + (separated by a colon) is quoted + unless is already surrounded by quotes. + + + + + Determines whether compilation is needed. + + + + + Finds the correct namespace/classname for a resource file from the + given dependent source file. + + The file from which the resource linkage of the resource file should be determined. + The culture of the resource file for which the resource linkage should be determined. + + The namespace/classname of the source file matching the resource or + if the dependent source file does not exist. + + + This behaviour may be overidden by each particular compiler to + support the namespace/classname syntax for that language. + + + + + Link a list of files into a resource assembly. + + The collection of resources. + Resource assembly to generate + Culture of the generated assembly. + + + + Compiles a set of resx files to a .resources files. + + The set of resx files to compile. + + + + Determines the culture associated with a given resource file by + scanning the filename for valid culture names. + + The resource file path to check for culture info. + The file on which the resource file depends. + + A valid instance if the resource is + associated with a specific culture; otherwise, . + + + + + Generate debug output. The default is . + + + Only used for <jsc> tasks, but retained for backward + compatibility (Clover.NET). + + + + + The output file created by the compiler. + + + + + Output type. Possible values are exe, winexe, + library or module. + + + + + Define conditional compilation symbol(s). + + + + Corresponds to /d[efine]: flag. + + + + + + Icon to associate with the application. + + + + Corresponds to /win32icon: flag. + + + + + + Instructs the compiler to treat all warnings as errors. The default + is . + + + + Corresponds to the /warnaserror[+|-] flag of the compiler. + + + When this property is set to , any messages + that would ordinarily be reported as warnings will instead be + reported as errors. + + + + + + Controls which warnings should be reported as errors. + + + + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Comma-separated list of warnings that should be suppressed by the + compiler. + + + + Corresponds with the /nowarn flag. + + + + + + Specifies a list of warnings that you want the compiler to suppress. + + + + + Instructs NAnt to recompile the output file regardless of the file timestamps. + + + When this parameter is to , NAnt will always + run the compiler to rebuild the output file, regardless of the file timestamps. + + + + + Specifies which type contains the Main method that you want to use + as the entry point into the program. + + + + Corresponds to the /m[ain]: flag of the compiler. + + + Use this property when creating an executable file. If this property + is not set, the compiler searches for a valid Main method in all + public classes. + + + + + + Specifies the key pair container used to strongname the assembly. + + + + + Specifies a strong name key file. + + + + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. The default is + . + + + + + Additional directories to search in for assembly references. + + + + Corresponds with the /lib[path]: flag. + + + + + + Reference metadata from the specified assembly files. + + + + + Specifies list of packages to reference. + + + + + Resources to embed. + + + + This can be a combination of resx files and file resources. + + + .resx files will be compiled by and then + embedded into the resulting executable. + + + The property is used to make + up the resource name added to the assembly manifest for non-resx + files. + + + For .resx files the namespace from the matching source file is used + as prefix. This matches the behaviour of Visual Studio. + + + Multiple resources tags with different namespace prefixes may be + specified. + + + + + + Link the specified modules into this assembly. + + + + + The set of source files for compilation. + + + + + Indicates whether package references are supported by compiler for + a given target framework. The default is . + + + + + Indicates whether the compiler for a given target framework supports + the "warnaserror" option that takes a list of warnings. The default + is . + + + + + Indicates whether the compiler for a given target framework supports + a command line option that allows a list of warnings to be + suppressed. The default is . + + + + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + + + + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + + + + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + + + + + Gets the file extension required by the current compiler. + + + The file extension required by the current compiler. + + + + + Gets the class name regular expression for the language of the current compiler. + + class name regular expression for the language of the current compiler + + + + Gets the namespace regular expression for the language of the current compiler. + + namespace regular expression for the language of the current compiler + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Holds class and namespace information for resource (*.resx) linkage. + + + + + Initializes a new instance of the + class. + + The namespace the resource is under. + The class name the resource is associated with. + + + + Returns the resource linkage as a string. + + + A string representation of the resource linkage. + + + + + Gets a value indicating whether the + instances contains valid data. + + + if the + instance contains valid data; otherwise, . + + + + + Gets a value indicating whether a namespace name is available + for this instance. + + + if a namespace name is available for + this instance; otherwise, + . + + + + + Gets a value indicating whether a class name is available + for this instance. + + + if a class name is available for + this instance; otherwise, + . + + + + + Gets the name of namespace the resource is under. + + + The name of namespace the resource is under. + + + + + Gets the name of the class (most likely a form) that the resource + is associated with. + + + The name of the class the resource is associated with. + + + + + Gets the culture that the resource is associated with. + + + The culture that the resource is associated with. + + + + + Compiles C# programs. + + + + In order to have generate manifest resource names + that match those generated by Microsoft Visual Studio.NET, the value of + the attribute of the <> + element should match the "Default Namespace" of the C# project, and the + value of the attribute + should be set to "". + + + + Compile a "HelloWorld" application, including embedded resources. + + + + + + + + + + + + + + + + + + ]]> + + + + + + Writes the compiler options to the specified . + + to which the compiler options should be written. + + + + Determines whether compilation is needed. + + + + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + + + + + Specifies the type of debugging information generated by the + compiler. The default is . + + + + + No longer expose this to build authors. Use + instead. + + + + + The name of the XML documentation file to generate. + + + + Corresponds with the /doc: flag. + + + + + + Specifies the size of sections in the output file. Valid values are + 512, 1024, 2048, 4096, and 8192. + + + The size of sections in the output file. + + + + + Instructs the compiler not to import mscorlib.dll. The default is + . + + + + Corresponds with the /nostdlib[+|-] flag. + + + + + + Instructs the compiler not to use implicit references to assemblies. + The default is . + + + + Corresponds with the /noconfig flag. + + + + + + Specifies whether an integer arithmetic statement that is not in + the scope of the checked or unchecked keywords and + that results in a value outside the range of the data type should + cause a run-time exception. The default is . + + + + Corresponds with the /checked[+|-] flag. + + + + + + Instructs the compiler to allow code that uses the unsafe + keyword. The default is . + + + + Corresponds with the /unsafe[+|-] flag. + + + + + + Causes the compiler to only accept syntax that is included in a + given specification. + + + + Corresponds with the /langversion flag. + + + + + + Specifies whether the compiler should perform optimizations to the + make output files smaller, faster, and more effecient. The default + is . + + + if the compiler should perform optimizations; + otherwise, . + + + + Corresponds with the /optimize[+|-] flag. + + + + + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + + + + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + + + + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + + + + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + + + + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + + + + + Specifies whether the compiler for the active target framework + supports accepting only a specific language syntax. + The default is . + + + + + Gets the file extension required by the current compiler. + + + For the C# compiler, the file extension is always cs. + + + + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + + + + + Gets the namespace regular expression for the language of the current compiler. + + + Namespace regular expression for the language of the current + compiler. + + + + + Signs delay-signed .NET Assemblies, or re-signs existing assemblies. + + + + The delay-signing mechanism takes a fileset (named targets) + and either a attribute for a file containing the + public and private keys, or to name a key + container. + + + + Sign partially-signed foo.dll with bar.snk. + + + + + + + ]]> + + + + + + Converts a single file or group of files. + + + + + List of assemblies/executables to sign. + + + + + Specifies the filesystem path to the signing key. + + + + + Specifies the key container. + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Compiles ILASM programs. + + + + Compiles helloworld.il to helloworld.exe. + + + + + + + + ]]> + + + + + + Compiles the sources. + + + + + Writes the compiler options. + + + + + Writes an option using the default output format. + + + The to which the compiler options should + be written. + + + A that contains the name of the + option which should be passed to the compiler. + + + + + Writes an option and its value using the default output format. + + + The to which the compiler options should + be written. + + + A that contains the name of the + option which should be passed to the compiler. + + + A that contains the value of the + option which should be passed to the compiler. + + + + + Determines whether or not compilation is needed. + + + if compilation is needed; otherwise, + . + + + + + Specifies whether or not the compiler should measure and report + the compilation times. + + + if the compilation times should be + measured and reported; otherwise, . The + default is . + + + + Corresponds to the /CLOCK flag. + + + + + + Specifies whether or not the compiler should generate debug + information. + + + if debug information should be generated; + otherwise, . The default is + . + + + + Corresponds to the /DEBUG flag. + + + + + + Specifies whether or not the compiler should attempt to create a + PE file even if compilation errors have been reported. + + + if a PE file has to be created even if + compilation errors have been reported; otherwise, + . The default is . + + + + Corresponds to the /ERROR flag. + + + + + + Instructs NAnt to recompile the output file regardless of the file + timestamps. + + + if the output file should be recompiled + regardless of its timestamps; otherwise . + The default is . + + + + + Specifies whether or not the compiler should type a formatted + listing of the compilation result. + + + if a formatted listing of the compilation + result should be typed; otherwise, . The + default is . + + + + Corresponds to the /LISTING flag. + + + + + + Instructs the compiler to set the FileAlignment value in + the PE header. + + + An that represents the FileAlignment + value to set in the PE header. The value must be a power of 2, in + range from 512 to 65536. + + + + Corresponds to the /ALIGNMENT flag. + + + + + + Instructs the compiler to set the ImageBase value in + the PE header. + + + A that represents the ImageBase + value to set in the PE header. + + + + Corresponds to the /BASE flag. + + + + + + Instructs the compiler to set the Flags value in the CLR + header. + + + An that represents the Flags + value to set in the CLR header. The most frequently value are 1 + (pre-IL code) and 2 (mixed code). The third bit indicating that + the PE file is strong signed, is ignored. + + + + Corresponds to the /FLAGS flag. + + + + + + Instructs the compiler to set the Subsystem value in the PE + header. + + + An that represents the Subsystem + value to set in the PE header. The most frequently value are 3 + (console application) and 2 (GUI application). + + + + Corresponds to the /SUBSYSTEM flag. + + + + + + Specifies which output type should be generated. + + + A that contains the target type. + Possible values are dll and exe. + + + + Corresponds to the /OUTPUT flag. + + + + + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that contains the private + encryption key. + + + + Corresponds to the /KEY=keysource]]> + flag. + + + + + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that represents the file + containing the private encryption key. + + + + Corresponds to the /KEY=keyfile]]> + flag. + + + + + + Specifies the name of the output file created by the compiler. + + + A that represents the name of + the output file. + + + + Corresponds to the /OUTPUT flag. + + + + + + Instructs the compiler to link the specified unmanaged resource + file into the resulting PE file. + + + A that represents the unmanaged + resource file to link. + + + + Corresponds to the /RESOURCE flag. + + + + + + Specifies the set of source files to compile. + + + A that represents the set + of source files to compile. + + + + + Gets the command-line arguments for the external program. + + + A that contains the command-line + arguments for the external program. + + + + + Compiles JScript.NET programs. + + + Compile helloworld.js to helloworld.exe. + + + + + + + ]]> + + + + + + Writes module references to the specified . + + The to which the module references should be written. + + + + Writes the compiler options to the specified . + + to which the compiler options should be written. + + + + Automatically references assemblies if they have the same name as + an imported namespace or as a type annotation when declaring a + variable. The default is . + + + + Corresponds with the /autoref flag. + + + + + + Instructs the compiler not to import standard library, and changes + to . The default is + . + + + + Corresponds with the /noconfig flag. + + + + + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + + + + + Causes the compiler to generate errors for implicit method + overrides. The default is . + + + + Corresponds with the /versionsafe flag. + + + + + + Specifies the warning level for the compiler to display. Valid + values are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + + + + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not allow control over which warnings should be + reported as errors. + + + + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support package references. + + + + + Specifies a list of warnings that you want the compiler to suppress. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support suppressing warnings. + + + + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + + + + + Specifies the key pair container used to strongname the assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Specifies a strong name key file. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + + + + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + + + + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support linking modules. + + + + + Gets the file extension required by the current compiler. + + + For the JScript.NET compiler, the file extension is always js. + + + + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + + + + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + + + + + Generates a .licence file from a .licx file. + + + + If no output file is specified, the default filename is the name of the + target file with the extension .licenses appended. + + + + + Generate the file component.exe.licenses file from component.licx. + + + + ]]> + + + + + + Initializes the class. + + + + + Updates the of the specified + . + + The of which the should be updated. + + + + Generates the license file. + + + + + Determines whether the .licenses file needs to be recompiled + or is uptodate. + + The .licenses file. + + if the .licenses file needs compiling; + otherwise, . + + + + + Input file to process. + + + + + Name of the license file to output. + + + + + Names of the references to scan for the licensed component. + + + + + Specifies the executable for which the .licenses file is generated. + + + + + Specifies the executable for which the .licenses file is generated. + + + + + Indicates whether assembly references are supported by the current + target framework. The default is . + + + Applies only to frameworks having a command line tool for compiling + licenses files. + + + + + Indicates whether the current target framework has a command line + tool for compiling licenses files. The default is + . + + + + + Gets the working directory for the application. + + + The working directory for the application. + + + + + The command-line arguments for the external program. + + + Override to avoid exposing these elements in build file. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + + + + + Responsible for reading the license and writing them to a license + file. + + + + + Obtains a lifetime service object to control the lifetime policy for + this instance. + + + An object of type used to control the lifetime + policy for this instance. This is the current lifetime service object + for this instance if one exists; otherwise, a new lifetime service + object initialized with a lease that will never time out. + + + + + Creates the whole license file. + + The instance for which the license file should be created. + The .licenses file to create. + + + + Determines whether the given object is serializable in binary + format. + + The object to check. + + if is + serializable in binary format; otherwise, . + + + + + Runs NDoc V1.3.1 to create documentation. + + + + See the NDoc home page for more + information. + + + By default, only the NDoc MSDN documenter ships as part of the NAnt + distribution. To make another NDoc documenter from the NDoc V1.3.1 + distribution available to the , copy the + documenter assembly (and possible dependencies) to the "lib" + directory corresponding with the CLR you're running NAnt on + (eg. <nant root>/bin/lib/net/1.1). + + + + + Document two assemblies using the MSDN documenter. The namespaces are + documented in NamespaceSummary.xml. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + Content of NamespaceSummary.xml : + + + + The Foo.Bar namespace reinvents the wheel. + + + The Foo.Bar.Tests namespace ensures that the Foo.Bar namespace reinvents the wheel correctly. + + + ]]> + + + + + + Initializes the taks and verifies the parameters. + + + + + Generates an NDoc project and builds the documentation. + + + + + Represents the method that will be called to update the overall + percent complete value and the current step name. + + The source of the event. + A that contains the event data. + + + + Represents the method that will be called to update the current + step's precent complete value. + + The source of the event. + A that contains the event data. + + + + Returns the documenter for the given project. + + + Documenter is not found. + + + is . + + + + + Performs macro expansion for the given nodes. + + for which expansion should be performed. + + + + The set of assemblies to document. + + + + + The set of namespace summary files. + + + + + Specifies the formats in which the documentation should be generated. + + + + + Collection of additional directories to search for referenced + assemblies. + + + + + Installs or removes .NET Services. + + + + This tasks provides the same functionality as the regsvcs tool + provided in the .NET SDK. + + + It performs the following actions: + + + + Loads and registers an assembly. + + + Generates, registers, and installs a type library into a specified COM+ application. + + + Configures services that are added programmatically to your class. + + + + Refer to the .NET Services Installation Tool (Regsvcs.exe) for more information. + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. If the + application already exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to myTargetApp + and produces the myTest.tlb type library. If the application already + exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. A new + application is always created. + + + + ]]> + + + + + Uninstalls the COM+ application contained in myTest.dll. + + + + ]]> + + + + + + Performs the specified action. + + + + + Defines the action to take with the assembly. The default is + . + + + + + The source assembly file. + + + The assembly must be signed with a strong name. + + + + + Specifies the type library file to install. + + + + + Uses an existing type library. The default is . + + + + + Do not reconfigure an existing target application. + The default is . + + + + + Configures components only; ignores methods and interfaces. + The default is . + + + + + Expect an existing application. The default is . + + + + + Specifies the name of the COM+ application to either find or create. + + + + + Specifies the name or id of the COM+ application to either find or + create. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Defines the possible actions for a .NET Service. + + + + + Finds or creates the target application. + + + + + Creates the target application. + + + + + Uninstalls the target application. + + + + + Converts files from one resource format to another. + + + + If no is specified, the resource file will + be created next to the input file. + + + + + Convert a resource file from the .resx to the .resources + format. + + + + ]]> + + + + + Convert a set of .resx files to the .resources format. + + + + + + + + ]]> + + + + + + Updates the of the specified + . + + The of which the should be updated. + + + + Converts a single file or group of files. + + + + + Cleans up generated files. + + + + + Determines whether the specified input file needs to be compiled. + + The input file. + The output file. + + if the input file need to be compiled; + otherwise . + + + + + Determines the full path and extension for the output file. + + The output file for which the full path and extension should be determined. + + The full path (with extensions) for the specified file. + + + + + Determines whether the specified resource file references third + party assemblies by checking whether a <data> element exists + with a "type" attribute that does not start with + "System.". + + The resource file to check. + + if the resource file references third party + assemblies, or an error occurred; otherwise, . + + + This check will only be accurate for 1.0 resource file, but the + 2.0 resx files can only be compiled with a resgen tool that supported + assembly references, so this method will not be used anyway. + + + + + Returns a list of external file references for the specified file. + + The resx file for which a list of external file references should be returned. + + A list of external file references for the specified file, or + if does not + exist or does not support external file references. + + + + + Input file to process. + + + The full path to the input file. + + + + + The resource file to output. + + + + + The target type. The default is resources. + + + + + The directory to which outputs will be stored. + + + + + Use each source file's directory as the current directory for + resolving relative file paths. The default is . + Only supported when targeting .NET 2.0 (or higher). + + + + + Takes a list of .resx or .txt files to convert to .resources files. + + + + + Reference metadata from the specified assembly files. + + + + + Indicates whether assembly references are supported by the + resgen tool for the current target framework. The default + is . + + + + + Indicates whether external file references are supported by the + resgen tool for the current target framework. The default + is . + + + + + For internal use only ! + + + + + Gets the working directory for the application. + + + The working directory for the application. + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + + + + + For internal use only ! + + + + + Initializes a new instance of the + class for a given input and output file. + + The resource to compile. + The compiled resource. + + + + Gets the resource file to compile. + + + The resource file to compile. + + + + + Gets the compiled resource file. + + + The compiled resource file. + + + + + Executes the code contained within the task. This code can include custom extension function definitions. + Once the script task has executed those custom functions will be available for use in the buildfile. + + + + The must contain a single code + element, which in turn contains the script code. + + + A static entry point named ScriptMain is required if no custom functions have been defined. It must + have a single parameter. + + + The following namespaces are loaded by default: + + + + System + + + System.Collections + + + System.Collections.Specialized + + + System.IO + + + System.Text + + + System.Text.RegularExpressions + + + NAnt.Core + + + + + Run C# code that writes a message to the build log. + + <script language="C#"> + <code> + <![CDATA[ + public static void ScriptMain(Project project) { + project.Log(Level.Info, "Hello World from a script task using C#"); + } + ]]> + </code> + </script> + + + + Define a custom function and call it using C#. + + <script language="C#" prefix="test" > + <code> + <![CDATA[ + [Function("test-func")] + public static string Testfunc( ) { + return "some result !!!!!!!!"; + } + ]]> + </code> + </script> + <echo message='${test::test-func()}'/> + + + + Use a custom namespace in C# to create a database + + <script language="C#" > + <references> + <include name="System.Data.dll" /> + </references> + <imports> + <import namespace="System.Data.SqlClient" /> + </imports> + <code> + <![CDATA[ + public static void ScriptMain(Project project) { + string dbUserName = "nant"; + string dbPassword = "nant"; + string dbServer = "(local)"; + string dbDatabaseName = "NAntSample"; + string connectionString = String.Format("Server={0};uid={1};pwd={2};", dbServer, dbUserName, dbPassword); + + SqlConnection connection = new SqlConnection(connectionString); + string createDbQuery = "CREATE DATABASE " + dbDatabaseName; + SqlCommand createDatabaseCommand = new SqlCommand(createDbQuery); + createDatabaseCommand.Connection = connection; + + connection.Open(); + + try { + createDatabaseCommand.ExecuteNonQuery(); + project.Log(Level.Info, "Database added successfully: " + dbDatabaseName); + } catch (Exception e) { + project.Log(Level.Error, e.ToString()); + } finally { + connection.Close(); + } + } + ]]> + </code> + </script> + + + + + Run Visual Basic.NET code that writes a message to the build log. + + + <script language="VB"> + <code> + <![CDATA[ + Public Shared Sub ScriptMain(project As Project) + project.Log(Level.Info, "Hello World from a script task using Visual Basic.NET") + End Sub + ]]> + </code> + </script> + + + + Define a custom task and call it using C#. + + <script language="C#" prefix="test" > + <code> + <![CDATA[ + [TaskName("usertask")] + public class TestTask : Task { + #region Private Instance Fields + + private string _message; + + #endregion Private Instance Fields + + #region Public Instance Properties + + [TaskAttribute("message", Required=true)] + public string FileName { + get { return _message; } + set { _message = value; } + } + + #endregion Public Instance Properties + + #region Override implementation of Task + + protected override void ExecuteTask() { + Log(Level.Info, _message.ToUpper()); + } + #endregion Override implementation of Task + } + ]]> + </code> + </script> + <usertask message='Hello from UserTask'/> + + + + + Define a custom function and call it using Boo. + + + <script language="Boo.CodeDom.BooCodeProvider, Boo.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67" + failonerror="true"> + <code> + <![CDATA[ + + [Function("test-func")] + def MyFunc(): + return "Hello from Boo !!!!!!" + ]]> + </code> + </script> + <echo message='${script::test-func()}'/> + + + + + + Initializes the task. + + + + + Executes the script block. + + + + + The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP". + "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing + . + + + + + Any required references. + + + + + The name of the main class containing the static ScriptMain + entry point. + + + + + The namespace prefix for any custom functions defined in the script. + If ommitted the prefix will default to 'script' + + + + + The namespaces to import. + + + + + The code to execute. + + + + + Compiles Visual Basic.NET programs. + + + + In order to have generate manifest resource names + that match those generated by Microsoft Visual Studio.NET, the value of + the attribute of the <> + element should match the "Root namespace" of the VB.NET project, and the + value of the attribute + should be set to "". + + + + Example build file using this task. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + Finds the correct namespace/classname for a resource file from the + given dependent source file, and ensure the + is prefixed. + + The file from which the resource linkage of the resource file should be determined. + The culture of the resource file for which the resource linkage should be determined. + + The namespace/classname of the source file matching the resource or + if the dependent source file does not exist. + + + + + Writes conditional compilation constants to the specified + . + + The to which the conditional compilation constants should be written. + + + + Writes the compiler options to the specified . + + to which the compiler options should be written. + + + + Determines whether compilation is needed. + + + + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address must be specified as a hexadecimal number. + + + + + Specifies the type of debugging information generated by the + compiler. The default is . + + + + + No longer expose this to build authors. Use + instead. + + + + + The name of the XML documentation file to generate. Only supported + when targeting .NET 2.0 (or higher). + + + + Corresponds with the /doc: flag. + + + + + + Specifies whether the /imports option gets passed to the + compiler. + + + The value of this attribute is a string that contains one or more + namespaces separated by commas. + + + See the Microsoft.NET Framework SDK documentation for details. + + Example of an imports attribute + + + + + + The namespaces to import. + + + + + Instructs the compiler not to reference standard libraries + (system.dll and VBC.RSP). The default is . + Only supported when targeting .NET 2.0 (or higher). + + + + Corresponds with the /nostdlib flag. + + + + + + Specifies whether /optioncompare option gets passed to the + compiler. + + + text, binary, or an empty string. If the value is + or an empty string, the option will not be + passed to the compiler. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether the /optionexplicit option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether the /optimize option gets passed to the + compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether the /optionstrict option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + + + + + Specifies whether the /removeintchecks option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether the /rootnamespace option gets passed to + the compiler. + + + The value of this attribute is a string that contains the root + namespace of the project. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + + + + + Specifies whether the compiler for the active target framework + supports NOT referencing standard libraries (system.dll and VBC.RSP). + The default is . + + + + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + + + + + Gets the file extension required by the current compiler. + + + For the VB.NET compiler, the file extension is always vb. + + + + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + + + + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + + + + + Compiles Visual J# programs using vjc, Microsoft's J# compiler. + + + + In order to have generate manifest resource names + that match those generated by Microsoft Visual Studio.NET, the value of + the attribute of the <> + element should match the "Default Package" of the J#.NET project, and + the value of the attribute + should be set to "". + + + + Compile a "HelloWorld" application, including embedded resources. + + + + + + + + + + + + + + + + + ]]> + + + + + + Writes module references to the specified . + + The to which the module references should be written. + + + + Writes the compiler options to the specified . + + to which the compiler options should be written. + + + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + + + + + Specifies the type of debugging information generated by the + compiler. The default is . + + + + + No longer expose this to build authors. Use + instead. + + + + + Specifies whether package-scoped members are accessible outside of + the assembly. In other words, package scope is treated as assembly + scope when emitting metadata. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + + + Corresponds to the /securescoping flag. + + + See the Visual J# Reference for details. + + + + ]]> + + + + + Specifies whether to disable language extensions. + + + The value of this property must be either all, net, + or an empty string. + + + + Corresponds to the /x flag. + + + See the Visual J# Reference for details. + + + + To disable only the .NET Framework extensions: + ]]> + To disable the .NET Framework extensions and the VJ++ 6.0 extensions: + ]]> + + + + + Specifies the location of assemblies referenced by way of the /reference flag. + + + + Corresponds to the /libpath:dir[;dir2] flag. + + + See the Visual J# Reference for details. + + + + + + Associate Java-language/COM package names. + + + The value of this propery. must be package=namespace, @filename, + or an empty string. + + + + Corresponds to the /jcpa:package=namespace and /jcpa:@filename flags. + + + See the Visual J# Reference for details. + + + + Map package 'x' to namespace 'y': + ]]> + + + + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + + See the Visual J# Reference for details. + + + + + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn option. + + + + + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not allow control over which warnings should be + reported as errors. + + + + + Reference packages + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support package references. + + + + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support linking modules. + + + + + Gets the file extension required by the current compiler. + + + For the J# compiler, the file extension is always jsl. + + + + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + + + + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + + + + + Override to avoid exposing the configuration setting for this + task as Visual J# will never support package references. + + + , as the Visual J# compiler will never + support package references. + + + + + Represents an assembly-level attribute. + + + + + Initializes a new instance of the + class. + + + + + Typename of the assembly-level attribute. + + + + + Value of the attribute. + + + + + If then the value of the attribute will be + set as is, without actually looking for a matching constructor or + named properties. The default is . + + + if the value of the attribute should be set + as is; otherwise, . + + + + + Indicates if the attribute should be generated. + + + if the attribute should be generated; + otherwise, . + + + + + Indicates if the attribute should be not generated. + + + if the attribute should be not generated; + otherwise, . + + + + + Contains a strongly typed collection of + objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with + value is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified value. + + The value of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + A specialized used for setting the lib directories. + + + The primary reason for this class is to allow the + to always be the same value as the parent + + + + + + Initializes a new instance of the class. + + + + + + override this. We will always use the base directory of the parent. + overriding without the TaskAttribute attribute prevents it being set + in the source xml + + + + + Specialized class for managing assembly files. + + + + If an include pattern does not contain any wildcard characters then + the assembly will be searched for in following locations (in the order listed): + + + + + The base directory of the fileset. + + + + + The directories specified using the nested <lib> element. + + + + + The list of reference assemblies of the current target framework. + + + + + The reference assemblies of a given target framework are defined using + <reference-assemblies> filesets in the <framework> node + of the NAnt configuration file. + + + + + Define a reference with name "sys.assemblies", holding + a set of system assemblies. + + + + + + + + ]]> + + + Use the predefined set of assemblies to compile a C# assembly. + + + + + + + + + ]]> + + + + + Compile a C# assembly using assembly references that are searched for + in the "Third Party Assemblies" and "Company Assemblies" + directories. + + + + + + + + + + + + + + + + ]]> + + + + + + + Initializes a new instance of the class. + + + + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + AssemblyFileSets are used + + + + + + Do a normal scan and then resolve assemblies. + + + + + Resolves references to system assemblies and assemblies that can be + resolved using directories specified in . + + + + + Additional directories to search in for assembly references. + + + + loosely Corresponds with the /lib[path]: flag of the various compiler tasks. + + + + + + Represents a compiler warning. + + + + + A warning number, or comma-separated list of warnings, that you want + the compiler to suppress or report. + + + + + If then the element will be processed; + otherwise, skipped. The default is . + + + + + If then the element will be skipped; + otherwise, processed. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Specifies the type of debugging information generated by the compiler. + + + + For backward compatibility, the following string values can also be + used in build files: + + + + Value + Corresponding field + + + "true" + + + + "false" + + + + + When set to then the following conditional + compilation symbols will also be defined: + + + + DEBUG + + + TRACE + + + + + + + Create no debug information. + + + + + Enable attaching a debugger to the running program. + + + + + Enable attaching a debugger to the running program. + + + + + Only display assembler when the running program is attached to the + debugger. + + + + + Specialized that also supports + case-insensitive conversion of "true" to + and "false" to + . + + + + + Initializes a new instance of the + class. + + + + + Converts the given object to the type of this converter, using the + specified context and culture information. + + An that provides a format context. + A object. If a is passed, the current culture is assumed. + The to convert. + + An that represents the converted value. + + + + + Specifies whether the generated assembly is strongly named and will + be signed later. + + + + For backward compatibility, the following string values can also be + used in build files: + + + + Value + Corresponding field + + + "true" + + + + "false" + + + + + + + + Not specified. + + + + + Fully sign the assembly. + + + + + Only place the public key in the assembly, allowing the signature + to be added later. + + + + + Specialized that also supports + case-insensitive conversion of "true" to + and "false" to + . + + + + + Initializes a new instance of the + class. + + + + + Converts the given object to the type of this converter, using the + specified context and culture information. + + An that provides a format context. + A object. If a is passed, the current culture is assumed. + The to convert. + + An that represents the converted value. + + + + + Represents an embedded resource. + + + Do not yet expose this to build authors. + + + + + Initializes a new instance of the + with the specified file name and manifest resource name. + + The path of the compiled resource. + The manifest resource name of the embedded resource. + + + + Gets the physical location of the resource to embed. + + + The physical location of the resource to embed. + + + + + Gets the manifest resource name to use when embedding the resource. + + + The manifest resource name to use when embedding the resource. + + + + + Contains a collection of items. + + + Do not yet expose this to build authors. + + + + + Base class for collections that needs to be globally referencable. + + + + + Initializes a new instance of the + class. + + + + + Copies the items of the collection to an , + starting at a particular index. + + The one-dimensional that is the destination of the items copied from the collection. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to iterate through + the collection. + + + + + Removes an item at a specific index. + + The zero-based index of the item to remove. + + + + Removes all items from the collection. + + + + + Used by methods that take instances as argument + to verify whether the instance is valid for the collection class. + + The instance to verify. + + + + Checks whether the specified index is within the range of this + collection. + + The index to check. + + + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + + + + + Gets the number of items in the collection. + + + The number of items in the collection. + + + + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets a value indicating whether the collection has a fixed size. + + + . + + + + + Gets a value indicating whether the collection has a fixed size. + + + . + + + + + Gets the list of elements contained in the + instance. + + + An containing the elements of the + collection. + + + + + Gets the of the items in this collection. + + + The of the items in this collection. + + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Adds the items of a to the end of the collection. + + The to be added to the end of the collection. + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + + + + Gets the with the specified manifest + resource name. + + The manifest resource name of the to get. + + + + Gets the of the items in this collection. + + + The of the items in this collection. + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + + + + Enumerates the items of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + Represents a metadata file without assembly manifest. + + + + + Returns a textual representation of the module, which can be used as + argument for command-line tools. + + + A textual representation of the path, file[,target]. + + + + + The path of the module. + + + + + File name where the module should be copied to before it is compiled + into an assembly. + + + + + Gets or sets the that contains the module. + + + + + Contains a collection of items. + + + Do not yet expose this to build authors. + + + + + Initializes a new instance of the + for the specified . + + The containing the collection. + is . + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Copies the items of the collection to an , + starting at a particular index. + + The one-dimensional that is the destination of the items copied from the collection. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Removes all items from the collection. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Removes an item at a specific index. + + The zero-based index of the item to remove. + The parameter is less than 0 or greater than or equal to the value of the property of the . + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Adds the items of a to the end of the collection. + + The to be added to the end of the collection. + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + The parameter is less than 0 or greater than or equal to the value of the property of the . + + + + Gets the list of elements contained in the + instance. + + + An containing the elements of the + collection. + + + + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + + + + + Gets the number of items in the collection. + + + The number of items in the collection. + + + + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets a value indicating whether the collection has a fixed size. + + + . + + + + + Gets a value indicating whether the collection has a fixed size. + + + . + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + The parameter is less than 0 or greater than or equal to the value of the property of the . + + + + Enumerates the items of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + + One or more modules to compile into an assembly. + + + + + Define a global <moduleset> that can be referenced by + other tasks or types. + + + + + + + ]]> + + + + + + Initializes a new instance of the class. + + + + + The base of the directory of this . + The default is the project base directory. + + + + + The modules to add to this . + + + + + Represents a namespace to import. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class for the specified namespace. + + The namespace. + is . + + + + The name of the namespace to import. + + + The name of the namespace to import. + + + + + The name of the namespace to import. + + + The name of the namespace to import. + + + + + Indicates if the import should be generated. + + + if the import should be generated; otherwise, + . + + + + + Indicates if the import should be not generated. + + + if the import should be not generated; + otherwise, . + + + + + Contains a collection of items. + + + Define a reference with name "system.imports". + + + + + + ]]> + + Use the predefined set of imports to compile a VB.NET assembly. + + + + + + + + + + + + ]]> + + + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Returns a comma-delimited list of namespace imports. + + + A comma-delimited list of namespace imports, or an empty + if there are no namespace imports. + + + Each namespace import is quoted individually. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Adds the items of a to the end of the collection. + + The to be added to the end of the collection. + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new item was inserted. + + + + + Inserts a into the collection at the + specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Removes the specified from the + collection. + + The to remove from the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Gets the location of a in the collection. + + The object to locate. + + The zero-based location of the in the + collection. + + + If the is not currently a member of + the collection, -1 is returned. + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + + + + Gets the with the specified namespace. + + The namespace of the to get. + + + + Gets the of the items in this collection. + + + The of the items in this collection. + + + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. + + + + Enumerates the items of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + Gets the current item in the collection. + + + The current item in the collection. + + + + + Represents a package. + + + + + Name of the package to reference. Multiple package can be specified + with a single element as a semi-colon separated list of + package names. + + + + + Indicates if the package should be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + + + + + Indicates if the package should not be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + + + + + Contains a strongly typed collection of + objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Specialized class for managing resource files. + + + + + Initializes a new instance of the class. + + + + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + ResourceFileSet are used + + + + + + Creates a shallow copy of the . + + + A shallow copy of the . + + + + + Gets the manifest resource name for the specified resource file. + + The physical path of the resource file. + + The manifest resource name to be sent to the compiler. + + + + + Gets the manifest resource name for the file using both its physical + and logical path. + + The physical path of the resource file. + The logical location of the resource file. + + The manifest resource name to be sent to the compiler. + + + We use the relative path of the logical path, but the filename and + and the extension of the physical path to match VS.NET + + + + + Indicates the prefix to prepend to the actual resource. + This is usually the default namspace of the assembly. + + + + + Indicates whether prefixes should be dynamically generated by taking + the path of the resource relative to the basedir and appending it + to the specified prefix. The default is . + + + + + Gets a containing all matching resx files. + + + A containing all matching resx files. + + + + + Gets a containing all matching non-resx + files. + + + A containing all matching non-resx files. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Controls the behaviour of a compiler with regards to the reporting of + warnings. + + + + Instruct a compiler to report warning 0519 as an error. + + + + + + ]]> + + + + + Instruct a compiler not to report warning 0519 as an error, if the + release property is . + + + + + + ]]> + + + + + + Specifies a list of warnings that the compiler should treat as + errors. This overrides the + attribute. Only supported when targeting .NET 2.0 or higher. + + + + + Specifies a list of warnings that the compiler should NOT treat as + errors. This is only useful if + is . Only supported when targeting .NET 2.0 + or higher. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.MSNetTasks.dll b/slips/build/tools/nant/bin/NAnt.MSNetTasks.dll new file mode 100644 index 0000000..d09a7ca Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.MSNetTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.MSNetTasks.xml b/slips/build/tools/nant/bin/NAnt.MSNetTasks.xml new file mode 100644 index 0000000..8327211 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.MSNetTasks.xml @@ -0,0 +1,579 @@ + + + + NAnt.MSNetTasks + + + + + Disassembles any portable executable (PE) file that contains + intermediate language (IL) code. + + + + Files are only disassembled if the input file is newer than the output + file, or if the output file does not exist. However, you can + explicitly force files to be disassembled with the + attribute. + + + A can be used to select files to disassemble. + To use a , the + attribute must be set. The file name of the output file will be equal + to the file name of the input file, but with extension ".il". + + + + + Disassembles helloworld.exe to helloworld.il. + + + + ]]> + + + + + Disassembles a set of PE files into the specified directory. + + + + + + + + + ]]> + + + + + + Checks whether the task is initialized with valid attributes. + + + + + Disassembles the PE file(s). + + + + + Disassembles the specified PE file. + + The PE file to disassemble. + + + + Determines the full path and extension for the output file. + + + A that represents the PE file + file for which the corresponding output file should be determined. + + + A that represents the full path + for the output file. + + The path of the output file could not be determined. + + + + Writes the disassembler options. + + + + + Writes an option using the default output format. + + + The to which the disassembler options + should be written. + + + A that contains the name of the + option which should be passed to the disassembler. + + + + + Writes an option and its value using the default output format. + + + The to which the disassembler options + should be written. + + + A that contains the name of the + option which should be passed to the disassembler. + + + A that contains the value of the + option which should be passed to the disassembler. + + + + + Determines whether or not disassembling is needed. + + + if disassembling is needed; otherwise, + . + + + + + Specifies whether or not the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options. The default + is . + + + if the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options; + otherwise, . The default is + . + + + + Corresponds to the /ALL flag. + + + + + + Specifies whether or not the disassembler should generate the + IL stream bytes (in hexadecimal notation) as instruction comments. + The default is . + + + if the IL stream bytes should be generated + as instruction comments; otherwise, . The + default is . + + + + Corresponds to the /BYTE flag. + + + + + + Instructs NAnt to rebuild the output file regardless of the file + timestamps. The default is . + + + if the output file should be rebuilt + regardless of its timestamps; otherwise . + The default is . + + + + + Specifies whether or not the disassembler should include PE header + information and runtime header information in the output. The default + is . + + + if PE header information and runtime header + information should be included in the output; otherwise, + . The default is . + + + + Corresponds to the /HEADER flag. + + + + + + Specifies the PE file to disassemble. + + + A that represents the PE file + to disassemble. + + + + + Specifies whether or not the disassembler should include + references to original source lines. The default is . + + + if references to original source lines + should be included; otherwise, . The + default is . + + + + Corresponds to the /LINENUM flag. + + + + + + Specifies whether or not the disassembler should suppress ILASM + code output. The default is . + + + if ILASM code output should be suppresses; + otherwise, . The default is + . + + + + Corresponds to the /NOIL flag. + + + + + + Specifies whether or not the disassembler should disassemble + public items only. This is a shortcut for ="pub". + The default is . + + + if only public items should be + disassembled; otherwise, . The default is + . + + + + Corresponds to the /PUBONLY flag. + + + + + + Specifies whether or not the disassembler should enclose all names + in single quotation marks. By default, only names that don't match + the ILASM definition of a simple name are quoted. The default is + . + + + if all names should be enclosed in single + quotation marks; otherwise, . The default + is . + + + + Corresponds to the /QUOTEALLNAMES flag. + + + + + + Specifies whether or not the disassembler should generate + structured exception handling clauses in canonical (label) form. + The default is . + + + if structured exception handling clauses + should be generated in canonical form; otherwise, + . The default is . + + + + Corresponds to the /RAWEH flag. + + + + + + Specifies whether or not the disassembler should generate + original source lines as comments. The default is . + + + if original source lines should be + generated as comments; otherwise, . + The default is . + + + + Corresponds to the /SOURCE flag. + + + + + + Specifies whether or not the disassembler should generate metadata + token values as comments. The default is . + + + if metadata token values should be + generated as comments; otherwise, . The + default is . + + + + Corresponds to the /TOKENS flag. + + + + + + Specifies whether or not the disassembler should use the UNICODE + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UNICODE encoding; otherwise, . The + default is . + + + + Corresponds to the /UNICODE flag. + + + + + + Specifies whether or not the disassembler should use the UTF-8 + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UTF-8 encoding; otherwise, . The + default is . + + + + Corresponds to the /UTF8 flag. + + + + + + Instructs the disassembler to disassemble the specified item only. + + + A that specifies the item to + disassemble. + + + + Corresponds to the /ITEM flag. + + + + + + Instructs the disassembler to disassemble only the items with the + specified visibility. Possible values are PUB, PRI, + FAM, ASM, FAA, FOA, PSC, + or any combination of them separated by +. + + + A that contains the visibility + suboptions. + + + + Corresponds to the /VISIBILITY flag. + + + + + + Specifies the name of the output file created by the disassembler. + + + A that represents the name of + the output file. + + + + Corresponds to the /OUT flag. + + + + + + Specifies the directory to which outputs will be stored. + + + A that represents the + directory to which outputs will be stored. + + + + + Specifies a list of PE files to disassemble. To use a , + the attribute must be specified. + + + A that represents the set + of PE files to disassemble. + + + + + The command-line arguments for the external program. + + + Overridden to ensure the <arg> elements would not be exposed + to build authors. + + + + + Gets the command-line arguments for the external program. + + + A that contains the command-line + arguments for the external program. + + + + + Allows a Windows service to be controlled. + + + Starts the World Wide Web Publishing Service on the local computer. + + + ]]> + + + + Stops the Alerter service on computer 'MOTHER'. + + + ]]> + + + + + + Initializes a new instance of the + class. + + + + + Peforms actions on the service in order to reach the desired status. + + + + + Determines the desired status of the service based on the action + that should be performed on it. + + + The that should be reached + in order for the to be considered successful. + + + + + Starts the service identified by and + . + + instance for controlling the service identified by and . + + + + Stops the service identified by and + . + + instance for controlling the service identified by and . + + + + Restarts the service identified by and + . + + instance for controlling the service identified by and . + + + + Pauses the service identified by and + . + + instance for controlling the service identified by and . + + + + Continues the service identified by and + . + + instance for controlling the service identified by and . + + + + Holds the name of the service that should be controlled. + + + + + Holds the name of the computer on which the service resides. + + + + + Holds the action that should be performed on the service. + + + + + Holds the time, in milliseconds, the task will wait for a service + to reach the desired status. + + + + + The name of the service that should be controlled. + + + + + The name of the computer on which the service resides. The default + is the local computer. + + + + + The action that should be performed on the service. + + + + + The time, in milliseconds, the task will wait for the service to + reach the desired status. The default is 5000 milliseconds. + + + + + Defines the actions that can be performed on a service. + + + + + Starts a service. + + + + + Stops a service. + + + + + Restarts a service. + + + + + Pauses a running service. + + + + + Continues a paused service. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.NUnit.dll b/slips/build/tools/nant/bin/NAnt.NUnit.dll new file mode 100644 index 0000000..e242043 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.NUnit.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.NUnit.xml b/slips/build/tools/nant/bin/NAnt.NUnit.xml new file mode 100644 index 0000000..39d46d6 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.NUnit.xml @@ -0,0 +1,353 @@ + + + + NAnt.NUnit + + + + + Carries data specified through the formatter element. + + + + + Gets or sets the type of the formatter. + + The type of the formatter. + + + + Gets or sets a value indicating whether output should be persisted + to a file. + + + if output should be written to a file; otherwise, + . The default is . + + + + + Gets or sets the extension to append to the output filename. + + The extension to append to the output filename. + + + + Gets or sets the directory where the output file should be written + to, if is . + + + The directory where the output file should be written to. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + The built-in formatter types. + + + + + A plaintext formatter. + + + + + An XML formatter. + + + + + Represents the FormatterElement of the NUnit task. + + + + + Type of formatter. + + + + + Extension to append to the output filename. + + + + + Determines whether output should be persisted to a file. The default + is . + + + + + Specifies the directory where the output file should be written to, + if is . If not + specified, the output file will be written to the directory where + the test module is located. + + + + + Gets the underlying for the element. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.dll b/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.dll new file mode 100644 index 0000000..6f0086f Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.xml b/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.xml new file mode 100644 index 0000000..941273b --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.NUnit1Tasks.xml @@ -0,0 +1,538 @@ + + + + NAnt.NUnit1Tasks + + + + + The whole test suite started. + + + + + The whole test suite ended. + + + + + Sets the the formatter is supposed to write + its results to. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Prints information about running tests directly to the build log. + + + + Not used, all output goes to Log class. + + + Called when the whole test suite has started. + + + Called when the whole test suite has ended. + + + Convert a stack trace line into something that can be clicked on in an IDE output window. + The StackTrace string, see . + The string that gets appended to the end of file(line): portion. + + + + Runs tests using the NUnit V1.0 framework. + + + + See the NUnit home page for more + information. + + + The or + attributes are only used to stop more than one test suite to stop + running. If any test suite fails a build error will be thrown. + Set to to + ignore test errors and continue build. + + + + + Run tests in the MyProject.Tests.dll assembly. + + + The test results are logged in results.xml and results.txt + using the and + formatters, respectively. + + + + + + + + ]]> + + + + + + Stops running tests when a test causes an error. The default is + . + + + Implies haltonfailure. + + + + + Stops running tests if a test fails (errors are considered failures + as well). The default is . + + + + + Cancel the individual tests if they do not finish in the specified + time (measured in milliseconds). Ignored if fork is disabled. + + + + + Tests to run. + + + + + Formatters to output results of unit tests. + + + + + Represents a test element of an . + + + + + Base name of the test result. The full filename is determined by this + attribute and the extension of formatter. + + + + + Directory to write the reports to. + + + + + Class name of the test. + + + + + Assembly to load the test from. + + + + + Run the tests in a separate . + + + + + Stop the build process if an error occurs during the test run. + + + + + Stop the build process if a test fails (errors are considered failures + as well). + + + + + The application configuration file to use for the NUnit test domain. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Carries data specified through the test element. + + + + + Determines if the unit test needs running. + + + if unit test needs running, otherwise, + . + + + + Determines if the test needs running by looking at the date stamp + of the test assembly and the test results log. + + + + + + Runs a Suite extracted from a TestCase subclass. + + + + + Creates the formatters to be used when running this test. + + + + + Returns the output file or null if does not use a file. + + + + + Returns the test suite from a given class. + + + The assemblyQualifiedName parameter needs to be in form: + "full.qualified.class.name,Assembly" + + + + + Gets the collection of registered formatters. + + Collection of registered formatters. + + + + Gets the result of the test. + + The result of the test. + + + + Prints information about running tests in plain text. + + + + Sets the Writer the formatter is supposed to write its results to. + + + Called when the whole test suite has started. + + + Called when the whole test suite has ended. + + + Convert a stack trace line into something that can be clicked on in an IDE output window. + The StackTrace string, see . + The string that gets appended to the end of file(line): portion. + + + + Decorates NUnits with extra information such as + run-time. + + + + + Initializes a new instance of the + class. + + + + + Gets or sets the total run-time of a test. + + The total run-time of a test. + + + + Prints detailed information about running tests in XML format. + + + + + Initializes a new instance of the + class. + + + + + Sets the the formatter is supposed to + write its results to. + + + + + Called when the whole test suite has started. + + + + + Called when the whole test suite has ended. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.dll b/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.dll new file mode 100644 index 0000000..5663df3 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.xml b/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.xml new file mode 100644 index 0000000..4e16c35 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.NUnit2Tasks.xml @@ -0,0 +1,568 @@ + + + + NAnt.NUnit2Tasks + + + + + Controls the categories of tests to execute using the . + + + + Only include test cases and fixtures that require no internet access. + + + + + + ]]> + + + + + Exclude test cases and fixtures that are known to fail. + + + + + + ]]> + + + + + + Specifies a list of categories to include. + + + + + Specifies a list of categories to exclude. + + + + + Represents a certain group of test cases or fixtures. + + + + + A name of a category, or comma-separated list of names. + + + + + If then the category will be processed; + otherwise, skipped. The default is . + + + + + If then the category will be skipped; + otherwise, processed. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Returns a comma-delimited list of categories. + + + A comma-delimited list of categories, or an empty + if there are no categories. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with value + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified name. + + The name of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Contains a strongly typed collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Runs tests using the NUnit V2.2 framework. + + + + The attribute is only useful when more + than one test suite is used, and you want to continue running other + test suites although a test failed. + + + Set to to + ignore any errors and continue the build. + + + In order to run a test assembly built with NUnit 2.0 or 2.1 using + , you must add the following node to your + test config file : + + + + ... + + + + + + + + + + ... + + ]]> + + + See the NUnit home page for more + information. + + + + + Run tests in the MyProject.Tests.dll assembly. + + + + + + + ]]> + + + + + Only run tests that are not known to fail in files listed in the tests.txt + file. + + + + + + + + + + + + + + ]]> + + + + + + Runs the tests and sets up the formatters. + + + + + Stop the test run if a test fails. The default is . + + + + + Tests to run. + + + + + Formatters to output results of unit tests. + + + + + Represents a test element of an . + + + + + Name of the assembly to search for tests. + + + + + Name of a specific testfixture to run. If not specified then all + testfixtures are run. + + + + + Assemblies to include in test. + + + + + Categories of test cases to include or exclude. + + + + + Build fails on failure. The default is . + + + + + XSLT transform file to use when using the + formatter. + + + + + The application configuration file to use for the NUnit test domain. + If not specified, NAnt will try to use a configuration name matching + the file name of the assembly with extension ".config". + + + + + Gets all assemblies specified for these tests. + + + All assemblies specified for these tests. + + + + + Custom TestDomain, similar to the one included with NUnit, in order + to workaround some limitations in it. + + + + + Initializes a new instance of the + class. + + + + + Runs a single testcase. + + The test assembly. + The application configuration file for the test domain. + + The result of the test. + + + + + Helper class called when an assembly resolve event is raised. + + + + + Initializes an instanse of the + class. + + + + + Called back when the CLR cannot resolve a given assembly. + + The source of the event. + A that contains the event data. + + The nunit.framework we know to be in NAnts bin directory, if + that is the assembly that needs to be resolved; otherwise, + . + + + + + Occurs when an assembly is loaded. The loaded assembly is added + to the assembly cache. + + The source of the event. + An that contains the event data. + + + + Holds the list of directories that will be scanned for missing + assembly references. + + + + + Holds the loaded assemblies. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.SourceControlTasks.dll b/slips/build/tools/nant/bin/NAnt.SourceControlTasks.dll new file mode 100644 index 0000000..465c18d Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.SourceControlTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.SourceControlTasks.xml b/slips/build/tools/nant/bin/NAnt.SourceControlTasks.xml new file mode 100644 index 0000000..8da09a1 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.SourceControlTasks.xml @@ -0,0 +1,1283 @@ + + + + NAnt.SourceControlTasks + + + + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + + + + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + + + + + Name of the environmental variable specifying a users' home + in a *nix environment. + + + + + Used on windows to specify the location of application data. + + + + + The environment variable that holds path information. + + + + + The environment variable that holds the location of the + .cvspass file. + + + + + Property name used to specify the source control executable. This is + used as a readonly property. + + + + + Initializes a new instance of the + class. + + + + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. + + + + Adds a new global option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. + + + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. + + + + Set up the environment variables for a process. + + A process to setup. + + + + Append the files specified in the fileset to the command line argument. + Files are changed to use a relative path from the working directory + that the task is spawned in. + + + + + Derive the location of the version control system from the environment + variable PATH. + + The file information of the version control system, + or null if this cannot be found. + + + + The name of the passfile, overriden for each version control system (VCS). + + + + + The path to the specific home directory of the version control system, + this can be where the binary files are kept, or other app + information. + + + + + The environment variable that defines where the version control system + (VCS) home variable is kept. + + + + + The name of the version control system (VCS) executable file. + + + + + + The root variable contains information on how to locate a repository. + Although this information is in different formats it typically must + define the following: + + server location + protocol used to communicate with the repository + repository location on the server + project location in the repository + + + + + + + Destination directory for the local sandbox. If destination is not specified + then the current directory is used. + + + Root path of the local sandbox. + + + + Root path of the local sandbox. + + + + + + The password for logging in to the repository. + + + The password for logging in to the repository. + + + + + The full path to the cached password file. If not specified then the + environment variables are used to try and locate the file. + + + + + Holds a collection of globally available options. + + + + + A collection of options that can be used to modify the default behavoir + of the version control commands. See the sub-tasks for implementation + specifics. + + + + + Command-line arguments for the program. The command line arguments are used to specify + any cvs command options that are not available as attributes. These are appended + after the command itself and are additive to whatever attributes are currently specified. + + + <cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" + module="nant" + destination="e:\test\merillcornish\working" + readonly="true" + quiet="true" + commandline="-n" + cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe" + /> +
+ Produces the cvs command: + c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant +
+
+ + + The name of the command that is going to be executed. + + + + + Used to specify the version control system (VCS) files that are going + to be acted on. + + + + + The executable to use for ssh communication. + + + + + The environment name for the ssh variable. + + + + + The name of the version control system executable. + + + + + Get the command line arguments for the task. + + + + + Default value for the recursive directive. The default is + . + + + + + Default value for the quiet command. + + + + + Default value for the really quiet command. + + + + + An environment variable that holds path information about where + cvs is located. + + + + + Name of the password file that cvs stores pserver + cvsroot/ password pairings. + + + + + The default compression level to use for cvs commands. + + + + + The default use of binaries, defaults to use sharpcvs. + + + + + The name of the cvs executable. + + + + + The temporary name of the sharpcvslib binary file, to avoid + conflicts in the path variable. + + + + + Environment variable that holds the executable name that is used for + ssh communication. + + + + + Property name used to specify on a project level whether sharpcvs is + used or not. + + + + + Initializes a new instance of the + class. + + + + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. + + + + Override to append any commands before the modele and files. + + + + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + + + + + Add the given argument to the command line options. Note that are not explicitly + quoted are split into seperate arguments. This is to resolve a recent issue + with quoting command line arguments. + + + + + + The environment name for the ssh variable. + + + + + The name of the cvs binary, or cvs.exe at the time this + was written. + + + + + The name of the pass file, or .cvspass at the time + of this writing. + + + + + The name of the version control system specific home environment + variable. + + + + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + + + + + Used to specify the version control system (VCS) files that are going + to be acted on. + + + + + Get the cvs file set. + + + + + The name of the cvs executable. + + + + + The full path to the cvs binary used. The cvs tasks will attempt to + "guess" the location of your cvs binary based on your path. If the + task is unable to resolve the location, or resolves it incorrectly + this can be used to manually specify the path. + + + A full path (i.e. including file name) of your cvs binary: + On Windows: c:\vcs\cvs\cvs.exe + On *nix: /usr/bin/cvs + + + + + + The cvs root variable has the following components: + + + [protocol]:[username]@[servername]:[server path] +
    +
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • +
  • username: [username]
  • +
  • servername: cvs.sourceforge.net
  • +
  • server path: /cvsroot/nant
  • +
+
+
+ + NAnt anonymous cvsroot: + + :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant + + +
+ + + The module to perform an operation on. + + + The module to perform an operation on. This is a normal file/folder + name without path information. + + + In NAnt the module name would be: + nant + + + + + + if the SharpCvsLib binaries that come bundled + with NAnt should be used to perform the cvs commands, + otherwise. + + + You may also specify an override value for all cvs tasks instead + of specifying a value for each. To do this set the property + sourcecontrol.usesharpcvslib to . + + + If you choose not to use SharpCvsLib to checkout from cvs you will + need to include a cvs.exe binary in your path. + + + + To use a cvs client in your path instead of sharpcvslib specify + the property: + >property name="sourcecontrol.usesharpcvslib" value="false"< + + The default settings is to use sharpcvslib and the setting closest + to the task execution is used to determine which value is used + to execute the process. + + For instance if the attribute usesharpcvslib was set to false + and the global property was set to true, the usesharpcvslib is + closes to the point of execution and would be used and is false. + Therefore the sharpcvslib binary would NOT be used. + + + + + The executable to use for ssh communication. + + + + + Indicates if the output from the cvs command should be supressed. + The default is . + + + + + Indicates if the output from the cvs command should be stopped. + The default is . + + + + + if the sandbox files should be checked out in + read only mode. The default is . + + + + + if the sandbox files should be checked out in + read/write mode. The default is . + + + + + Compression level to use for all net traffic. This should be a value from 1-9. +
+
+ NOTE: This is not available on sharpcvslib. +
+
+ + + Produces an XML report that represents the cvs changes from the given + start day, to a given end date. + + + Report changes in NAnt from 1st of June 2004 until 25th of July 2004. + + + ]]> + + + + + + The command being executed. + + + + + Name of the xml file that will contain the cvs log information. + + + + + The earliest change to use in the cvs log command. + + + + + The latest date to use in the cvs log command. + + + + + The cvs command to execute. + + + + + Override use of sharpcvslib, needs to be true. + + + + + + The cvs root variable has the following components: + + + [protocol]:[username]@[servername]:[server path] +
    +
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • +
  • username: [username]
  • +
  • servername: cvs.sourceforge.net
  • +
  • server path: /cvsroot/nant
  • +
+
+ + If the cvsroot is not specified then the directory specified by the + attribute + is searched for CVS\Root. + +
+ + NAnt anonymous cvsroot: + + :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant + + +
+ + + Checks out a CVS module to the required directory. + + + Checkout NAnt. + + + ]]> + + + + + Checkout NAnt revision named 0_85 to the + folder c:\src\nant\v0.85. + + + + ]]> + + So the nant module tagged with revision 0_85 will be checked + out in the folder v0.85 under the working/ destination directory. +
This could be used to work on different + branches of a repository at the same time.
+
+ + + Checkout NAnt with specified revision date to the + folder c:\src\nant\2003_08_16. + + + + ]]> + + +
+ + + The command being executed. + + + + + Initializes a new instance of the class. + + + + + Specify the revision to checkout. This corresponds to the "sticky-tag" + of the file. + + + + + Sticky tag or revision to checkout. + + + + + Specify the revision date to checkout. The date specified is validated + and then passed to the cvs binary in a standard format recognized by + cvs. + + + + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + + + + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + + + + + The name of the cvs command that is going to be executed. + + + + + Executes the cvs login command which appends or updates an entry to the + specified .cvspass file. + + + Update .cvspass file to include the NAnt anonymous login. + + + ]]> + + + + + + Ensures all information is available to execute the . + + + + + Update the .cvspass file with the given password. If the passfile + is not specified then the default search locations are used: + + CVS_PASSFILE/.cvspass + HOME/.cvspass + USERPROFILE/.cvspass TODO: Confirm that this is valid + behavior or if it is going to give problems with the + cvsnt implementation. + + + + + + Password to append or update to the .cvspass file. + + + + + The full path to the .cvspass file. The default is ~/.cvspass. + + + + + + The current working directory. + + + + + The repository root string. + + + + + Executes the cvs command specified by the command attribute. + + + Checkout NAnt. + + + ]]> + + + + + + The cvs command to execute. + + + + + Specify if the module is needed for this cvs command. + + + + + Exports a cvs module in preperation for a release (i.e. the CVS version + folders are not exported). + + + Export the most recent NAnt sources from cvs. + + + ]]> + + + + + Export NAnt revision named your_favorite_revision_here to the + folder c:\src\nant\replacement_for_module_directory_name. + + **NOTE**: filesets names for the export task must be + prefixed with the module name. This is different than other tasks. + + + + + + + + + ]]> + + + + + + The command being executed. + + + + + Create a new instance of the . + + + The following values are set by default: +
    +
  • Recursive:
  • +
+
+
+ + + No shortening. Do not shorten module paths if -d specified. + + + + + Indicates whether the head revision should be used if the revison specified by + or the tags are not + found. The default is . + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + + + + + Specify the revision to update the file to. This corresponds to the "sticky-tag" + of the file. + + + + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + + + + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + + + + + The export command name for the cvs client. + + + + + Tags all sources in the remote repository with a given tag. + + + + Unlike tag, the rtag command acts only on sources that are in the repository. + Any modified sources on the local file system will NOT be tagged with this + command, so a commit should be performed before an rtag is done. + + + NOTE: Although a working directory is not necessary to perform the command + one must be specified in order to remain in compliance with the cvs library. + + + + Tag NAnt sources remotely. + + + ]]> + + + + Remove a tag from the remote repository. + + + ]]> + + + + + + Initializes a new instance of the + class. + + + + + Append the tag information to the commandline. + + + + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + + + + + Indicates whether the tag specified in should + be removed or not. + + + if the specified tag should be removed; + otherwise, . The default is . + + + + + Indicates whether the tag specified in should + be moved to the current file revision. If the tag does not exist + then it is created. + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + + + + + Indicates the repository that is acted on + for the tag command. Note if is + then the tag specified is moved to the revision + of the file on the HEAD of the branch specified. + + + The tag (or more likely) branch that should be used to apply the new tag. + + + + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + + + + + Indicates whether the head revision should be used if the + or the tags are not + found. + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + The name of the cvs command that is going to be executed. + + + + + Tags all local sources with the specified tag. + + + + This differs from the + in that it acts on references to the cvs files + contained in your local filesystem. As such the sticky tags and local + revisions can be considered in commits. It also allows you to verify that + all local files have been checked in before a tag is performed. + + + + Tag NAnt sources remotely. + + + ]]> + + + + Remove a tag from the remote repository. + + + ]]> + + + + + + Cvs command to be executed. + + + + + Initializes a new instance of the + class. + + + + + Append the tag information to the commandline. + + + + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + + + + + Indicates whether the tag specified in should + be removed or not. + + + if the specified tag should be removed; + otherwise, . The default is . + + + + + Indicates whether the tag specified in should + be moved to the current file revision. If the tag does not exist + then it is created. + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + + + + + Indicates the repository that is acted on + for the tag command. Note if is + then the tag specified is moved to the revision + of the file on the HEAD of the branch specified. + + + The tag (or more likely) branch that should be used to apply the new tag. + + + + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + + + + + Indicates whether the head revision should be used if the revision specified by + or the tags are not + found. + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + Indicates whether the head revision should be used if the + or the tags are not + found. + + + if the specified tag should be moved; + otherwise, . The default is . + + + + + The name of the cvs command that is going to be executed. + + + + + Not used + + + + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + + + + + Updates a CVS module in a local working directory. + + + Update nant. + + + ]]> + + + + + Update your NAnt revision named your_favorite_revision_here in + the folder c:\src\nant\replacement_for_module_directory_name. + + + + + + + + ]]> + + + + + + The command being executed. + + + + + Initializes a new instance of the + class. + + + Sets the build directory and prune empty directory properties to + . + + + + + If . new directories will be created on the local + sandbox. The default is . + + + + + If empty directories copied down from the + remote repository will be removed from the local sandbox. + The default is . + + + + + If the local copy of the file will be + overwritten with the copy from the remote repository. The default + is . + + + + + Specifies if the command should be executed recursively. The + default is . + + + The -R option is on by default in cvs. + + + + + Specify the revision to update the file to. This corresponds to the + "sticky-tag" of the file. + + + + + Sticky tag or revision to update the local file to. + + + A valid cvs tag. + + + + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + + + + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + + + + + The name of the cvs command that is going to be executed. + + + + + A is a with extra + attributes useful in the context of the . + + + + + Initialize the object and locate the .cvsignore + files to add to the exclude list. + + + + + Indicates whether the entires in the .cvsignore should be used to limit the + file list; to exclude files in .cvsignore, otherwise + . The default is . + + +
+
diff --git a/slips/build/tools/nant/bin/NAnt.VSNetTasks.dll b/slips/build/tools/nant/bin/NAnt.VSNetTasks.dll new file mode 100644 index 0000000..d83a222 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.VSNetTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.VSNetTasks.xml b/slips/build/tools/nant/bin/NAnt.VSNetTasks.xml new file mode 100644 index 0000000..7cdc619 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.VSNetTasks.xml @@ -0,0 +1,3912 @@ + + + + NAnt.VSNetTasks + + + + + Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. + + + + + Gets the project file of the project with the given unique identifier. + + The unique identifier of the project for which the project file should be retrieves. + + The project file of the project with the given unique identifier. + + No project with unique identifier could be located. + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the underlying task. + + + + + Loads the projects from the file system and stores them in an + instance variable. + + instance to use to determine whether an assembly is located in the Global Assembly Cache. + instance to use to determine location and references of assemblies. + TODO + A project GUID in the solution file does not match the actual GUID of the project in the project file. + + + + Translates a project path, in the form of a relative file path or + a URL, to an absolute file path. + + The directory of the solution. + The project path to translate to an absolute file path. + + The project path translated to an absolute file path. + + + + + Converts assembly references to projects to project references, adding + a build dependency.c + + The to analyze. + The solution configuration that is built. + containing list of projects that have been built. + containing list of projects that failed to build. + + + + Determines whether any of the project dependencies of the specified + project still needs to be built. + + The to analyze. + containing list of projects that have been built. + + if one of the project dependencies has not + yet been built; otherwise, . + + + + + Gets or sets the in memory representation of the project. + + + The in memory representation of the project, or + if the project is not (yet) loaded. + + + This property will always be for + projects that are not supported. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + + The position into which the new element was inserted. + + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + GUID is in the collection, using a case-insensitive lookup. + + The GUID to locate in the collection. + + if a with GUID + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified GUID. + + The GUID of the to get. + + Performs a case-insensitive lookup. + + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Returns a number representing how much this file fits this project type. + + + + + + This enables the override in other providers. Do not return big numbers, mainly when compring only on filename. + + + + + Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. + + + + + Compiles VS.NET solutions (or sets of projects), automatically determining + project dependencies from inter-project references. + + + + This task support the following projects: + + + + Visual Basic .NET + + + Visual C# .NET + + + Visual J# .NET + + + Visual C++ .NET + + + + Right now, only Microsoft Visual Studio .NET 2002 and 2003 solutions + and projects are supported. Support for .NET Compact Framework projects + is also not available at this time. + + + The also supports the model of referencing + projects by their output filenames, rather than referencing them inside + the solution. It will automatically detect the existance of a file + reference and convert it to a project reference. For example, if project + "A" references the file in the release output directory of + project "B", the will automatically + convert this to a project dependency on project "B" and will + reference the appropriate configuration output directory at the final + build time (ie: reference the debug version of "B" if the + solution is built as debug). + + + The expects all project files to be valid + XML files. + +

Resx Files

+ + When building a project for a down-level target framework, special care + should be given to resx files. Resx files (can) contain references to + a specific version of CLR types, and as such are only upward compatible. + + + For example: if you want to be able to build a project both as a .NET 1.0 + and .NET 1.1 assembly, the resx files should only contain references to + .NET 1.0 CLR types. Failure to do this may result in a + failure at runtime on machines with only the .NET Framework 1.0 installed. + +
+ + + Compiles all of the projects in test.sln, in release mode, in + the proper order. + + + + ]]> + + + + + Compiles all of the projects in projects.txt, in the proper + order. + + + + + + + + ]]> + + + + + Compiles projects A, B and C, using the output of project X as a + reference. + + + + + + + + + + + + + ]]> + + + + + Compiles all of the projects in the solution except for project A. + + + + + + + + ]]> + + + + + Compiles all of the projects in the solution mapping the specific project at + http://localhost/A/A.csproj to c:\inetpub\wwwroot\A\A.csproj and any URLs under + http://localhost/B/[remainder] to c:\other\B\[remainder]. This allows the build + to work without WebDAV. + + + + + + + + + ]]> + + + + + Compiles all of the projects in the solution placing compiled outputs + in c:\temp. + + + ]]> + + +
+ + + Initializes a new instance of the class. + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + + The macro cannot be expanded. + + + + Builds the list of folders that should be scanned for assembly + references. + + + The list of folders that should be scanned for assembly references. + + + + + The projects to build. + + + + + The projects to scan, but not build. + + + These projects are used to resolve project references and are + generally external to the solution being built. References to + these project's output files are converted to use the appropriate + solution configuration at build time. + + + + + The name of the VS.NET solution file to build. + + + + The can be used instead to supply a list + of Visual Studio.NET projects that should be built. + + + + + + The name of the solution configuration to build. + + + + Generally release or debug. Not case-sensitive. + + + + + + The directory where compiled targets will be placed. This + overrides path settings contained in the solution/project. + + + + + WebMap of URL's to project references. + + + + + Fileset of projects to exclude. + + + + + Set of folders where references are searched when not found in path + from project file (HintPath). + + + + + Includes Visual Studio search folders in reference search path. + The default is . + + + + + Allow the task to use WebDAV for retrieving/compiling the projects within solution. Use of + is preferred over WebDAV. The default is . + + + WebDAV support requires permission changes to be made on your project server. These changes may affect + the security of the server and should not be applied to a public installation. + Consult your web server or the NAnt Wiki documentation for more information. + + + + + Gets the list of folders to scan for assembly references. + + + The list of folders to scan for assembly references. + + + + + Defines how the project is using the ATL library. + + + + + Don't use ATL. + + + + + Use ATL in a Static Library. + + + + + Use ATL in a Shared DLL. + + + + + Defines how the project is using the MFC library. + + + + + Don't use MFC. + + + + + Use MFC in a Static Library. + + + + + Use MFC in a Shared DLL. + + + + + Indicates the possible ways in which precompiled header file use is + specified in a Visual C++ project. + + + The integer values assigned match those specified in the Visual C++ + project file for each setting. + > + + + + Precompiled header file use not specified. + + + + + Don't use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + + + + + Create precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + + + + + Automatically create precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + + + + + Use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + + + + + Represents a single mapping from URL project path to physical project + path. + + + + + Specifies the URL of the project file, or a URL fragment to match. + + + The URL of the project file or the URL fragment to match. + + + + + Specifies the actual path to the project file, or the path fragment + to replace. + + + The actual path to the project file or the path fragment to replace + the URL fragment with. + + + + + Specifies whether the mapping is case-sensitive or not. + + + A boolean flag representing the case-sensitivity of the mapping. Default is . + + + + + Indicates if the URL of the project file should be mapped. + + + if the URL of the project file should be + mapped; otherwise, . + + + + + Indicates if the URL of the project file should not be mapped. + + + if the URL of the project file should not + be mapped; otherwise, . + + + + + Contains a strongly typed collection of + objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Find the best matching for the given Uri. + + The value to match against the objects in the collection. + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + value is in the collection. + + The argument value to locate in the collection. + + if a with value + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified value. + + The value of the to get. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The full output path of the reference. + + + + + Gets the complete set of output files of the reference for the + specified configuration. + + The solution configuration that is built. + The set of output files to be updated. + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + + + + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + + + + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + if the reference is managed for the + specified configuration; otherwise, . + + + + + Returns the date and time the specified file was last written to. + + The file for which to obtain write date and time information. + + A structure set to the date and time that + the specified file was last written to, or + if the specified file does not + exist. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the underlying task. + + + + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + + + + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + + + + + Gets the project in which the reference is defined. + + + + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + . + + + + + Gets the complete set of output files for the specified assembly + and adds them to collection. + + The path of the assembly to get the output files for. + The set of output files to be updated. + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + + + + + Gets the complete set of output files for the referenced project. + + The solution configuration that is built. + The set of output files to be updated. + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + + + + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + + + + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + + + + + Searches for the given file in all paths in . + + The folders to search. + The file to search for. + + The path of the assembly if was found + in ; otherwise, . + + + + + Resolves an assembly reference in the framework assembly directory + of the target framework. + + The file to search for. + + The full path of the assembly file if the assembly could be located + in the framework assembly directory; otherwise, . + + + + + Resolves an assembly reference using a path relative to the project + directory. + + + The full path of the assembly, or if + is or an + empty . + + + + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + + + + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + + + + + Base class for all project classes. + + + + + Initializes a new instance of the class. + + + + + Gets the complete set of output files for the project. + configuration. + + The solution configuration that is built. + The set of output files to be updated. + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The build configuration. + + if the project output for the given build + configuration is managed; otherwise, . + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + XML fragment representing the project file. + + The Visual Studio product version of the specified project XML + file. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Verifies whether the specified XML fragment represents a valid project + that is supported by this . + + XML fragment representing the project file. + + The XML fragment is not supported by this . + -or- + The XML fragment does not represent a valid project (for this ). + + + + + Prepares the project for being built. + + The solution configuration that is built. + + The default implementation will ensure that none of the output files + are marked read-only. + + + + + Copies the specified file if the destination file does not exist, or + the source file has been modified since it was previously copied. + + The file to copy. + The destination file. + The in which context the operation will be performed. + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + + + + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to log, containing zero or more format items. + An array containing zero or more objects to format. + + The actual logging is delegated to the underlying task. + + + + + Gets the Visual Studio product version of the project. + + + The Visual Studio product version of the project. + + + + + Gets the name of the VS.NET project. + + + + + Gets the type of the project. + + + The type of the project. + + + + + Gets the path of the VS.NET project. + + + + + Gets the directory containing the VS.NET project. + + + + + Get the location of the project. + + + + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + + For projects, this is defined + as <Project Directory<\obj. + + + For projects, this is defined + as %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj. + + + + + + Gets or sets the unique identifier of the VS.NET project. + + + + + Gets a case-insensitive list of project configurations. + + + The key of the is the name of the + configuration and the value is a + instance. + + + + + Gets a list of project configurations that can be build. + + + + Project configurations that are not in this list do not need to be + compiled (unless the project was not loaded through a solution file). + + + The key of the is the name of the + configuration and the value is a + instance. + + + + + + Gets the extra set of output files for the project. + + + The extra set of output files for the project. + + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the set of projects that the project depends on. + + + The set of projects that the project depends on. + + + + + TODO: refactor this !!! + + + + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + . + + + + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + + + + + Returns a for launching the compiler + for this project. + + The configuration to build. + The response file for the compiler. + + A for launching the compiler for + this project. + + + + + Returns the project location from the specified project XML fragment. + + XML fragment representing the project file. + + The project location of the specified project XML file. + + + The project location could not be determined. + -or- + The project location is invalid. + + + + + Gets the absolute path of the type library for the project + output. + + The configuration to build. + + The absolute path of the type library for the project output. + + + + + Generates a type library for the specified assembly, registers it. + + The project configuration that is built. + The path of the type library to generate. + + The regasm tool is used to generate the type library. + + + + + Unregister a type library for the specified assembly, and the types + in that assembly. + + The project configuration that is built. + + The regasm tool is used to unregister the type library, and + remove the COM registration for types in the specified assembly. + + + + + Returns containing culture-specific resources. + + + A containing culture-specific resources. + + + The key of the is + and the value is an instance + for that culture. + + + + + Creates and initializes a instance. + + + An initialized instance. + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + XML fragment representing the project to check. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Returns the of the specified project + XML fragment. + + XML fragment representing the project to check. + + The of the specified project XML + fragment. + + + The project location could not be determined. + -or- + The project location is invalid. + + + + + Holds a case-insensitive list of source files. + + + The key of the is the full path of the + source file and the value is . + + + + + Gets the default file extension of sources for this project. + + + The default file extension of sources for this project. + + + + + Gets a value indicating if this is a web project. + + + if this is a web project; otherwise, + . + + + If the url of a web project has been mapped to a local path + (using the <webmap> element), then this property will return + for a + project. + + + + + Gets the name of the VS.NET project. + + + + + Gets the path of the VS.NET project. + + + + + Gets the directory containing the VS.NET project. + + + + + Get the location of the project. + + + + + Gets or sets the unique identifier of the VS.NET project. + + + + + Groups a set of instances for a specific + culture. + + + + + Initializes a new instance + for the specified culture. + + A . + + + + Gets the intermediate build directory in which the satellite + assembly is built. + + The project build configuration. + + The intermediate build directory in which the satellite assembly + is built. + + + + + Gets a representing the path to the + intermediate file location of the satellite assembly. + + The project build configuration. + The project settings. + + A representing the path to the + intermediate file location of the satellite assembly. + + + + + Gets path of the satellite assembly, relative to the output + directory. + + The project settings. + + The path of the satellite assembly, relative to the output + directory. + + + + + Gets the of the + . + + + + + Gets the set of localized resources. + + + + + Verifies whether the specified XML fragment represents a valid project + that is supported by this . + + XML fragment representing the project file. + + The XML fragment is not supported by this . + -or- + The XML fragment does not represent a valid project (for this ). + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + The document element of the project. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Returns a for launching the compiler + for this project. + + The configuration to build. + The response file for the compiler. + + A for launching the compiler for + this project. + + + + + Returns the project location from the specified project XML fragment. + + XML fragment representing the project file. + + The project location of the specified project XML file. + + + The project location could not be determined. + -or- + The project location is invalid. + + + + + Returns a value indicating whether the project represented by the + specified XML fragment is supported by . + + XML fragment representing the project to check. + + if supports + the specified project; otherwise, . + + + + A project is identified as as C# project, if the XML fragment at + least has the following information: + + + + + ... + + + ]]> + + + + + + Gets the type of the project. + + + The type of the project. + + + + + Gets the default file extension of sources for this project. + + + For C# projects, the default file extension is ".cs". + + + + + Initializes a new instance of the + class with the given . + + The project of the configuration. + + + + Expands the given macro. + + The macro to expand. + + The expanded macro. + + + The macro is not supported. + -or- + The macro is not implemented. + -or- + The macro cannot be expanded. + + + Expansion of a given macro is not yet implemented. + + + + + Is called each time a regular expression match is found during a + operation. + + The resulting from a single regular expression match during a . + + The expanded . + + + + + Gets the project. + + + + + Gets the name of the configuration. + + + + + Get the directory in which intermediate build output will be stored + for this configuration. + + + + This is a directory relative to the project directory named + obj\<configuration name>. + + + .resx and .licx files will only be recompiled if the + compiled resource files in the are not + uptodate. + + + + + + Gets the output directory. + + + + + Gets the path for the output file. + + + + + Gets the path in which the output file will be created before its + copied to the actual output path. + + + + + Get the path of the output directory relative to the project + directory. + + + + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + + + + + Gets the set of output files that is specific to the project + configuration. + + + The set of output files that is specific to the project + configuration. + + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + + + + + Gets the path in which the output file will be created before its + copied to the actual output path. + + + + + Gets a value indicating whether to register the project output for + use with COM components. + + + if the project output should be registered + for use with COM components; otherwise, . + + + + + Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. + + + + + Supports grouping of individual projects, and treating them as a solution. + + + + + Verifies whether the specified XML fragment represents a valid project + that is supported by this . + + XML fragment representing the project file. + + The XML fragment is not supported by this . + -or- + The XML fragment does not represent a valid project (for this ). + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + The document element of the project. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + + + + + Returns a for launching the compiler + for this project. + + The configuration to build. + The response file for the compiler. + + A for launching the compiler for + this project. + + + + + Returns the project location from the specified project XML fragment. + + XML fragment representing the project file. + + The project location of the specified project XML file. + + + The project location could not be determined. + -or- + The project location is invalid. + + + + + Returns a value indicating whether the project represented by the + specified XML fragment is supported by . + + XML fragment representing the project to check. + + if supports + the specified project; otherwise, . + + + + A project is identified as as J# project, if the XML fragment at + least has the following information: + + + + + ... + + + ]]> + + + + + + Gets the type of the project. + + + The type of the project. + + + + + Gets the default file extension of sources for this project. + + + For J# projects, the default file extension is ".jsl". + + + + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + + + + Visual Studio .NET uses the following search mechanism : + + + + + The project directory. + + + + + The directories specified in the "ReferencePath" property, + which is stored in the .USER file. + + + + + The .NET Framework directory (see KB306149) + + + + + + The directories specified under the following registry + keys: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKLM\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + Future versions of Visual Studio .NET will also check + in: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + + + + The HintPath. + + + + + + + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + + + + + Gets the Visual Studio .NET AssemblyFolders registry key matching + the current target framework. + + + The Visual Studio .NET AssemblyFolders registry key matching the + current target framework. + + The current target framework is not supported. + + We use the target framework instead of the product version of the + containing project file to determine what registry key to scan, as + we don't want to use assemblies meant for uplevel framework versions. + + + + + Indentifies the different output types of a managed project. + + + Visual Studio .NET does not support modules. + + + + + A class library. + + + + + A console application. + + + + + A Windows program. + + + + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + + + + + Gets the complete set of output files for the referenced project. + + The solution configuration that is built. + The set of output files to be updated. + + The complete set of output files for the referenced project. + + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the complete set of assemblies that need to be referenced when + a project references this project. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this project. + + + + Apparently, there's some hack in VB.NET that allows a type to be used + that derives from a type in an assembly that is not referenced by the + project. + + + When building from the command line (using vbc), the following error + is reported "error BC30007: Reference required to assembly 'X' + containing the base class 'X'. Add one to your project". + + + Somehow VB.NET can workaround this issue, without actually adding a + reference to that assembly. I verified this with both VS.NET 2003 and + VS.NET 2005. + + + For now, we have no other option than to return all assembly + references of the referenced project if the parent is a VB.NET + project. + + + + + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + + + + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + + + + + Gets a value indicating whether this reference represents a system + assembly. + + + as a project by itself can never be a + system assembly. + + + + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + . + + + + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + + + + + Gets the complete set of output files for the referenced project. + + The solution configuration that is built. + The set of output files to be updated. + + The key of the case-insensitive is the + full path of the output file and the value is the path relative to + the output directory. + + + + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + + + + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + + + + + Removes wrapper assembly from build directory, if wrapper assembly + no longer exists in output directory or is not in sync with build + directory, to force rebuild. + + The project configuration. + + + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the reference wraps a Primary Interop + Assembly; otherwise, . + + + + + Gets a value indicating whether this reference represents a system + assembly. + + + as none of the system assemblies are wrappers + or Primary Interop Assemblies anyway. + + + + + Gets the name of the tool that should be used to create the + . + + + The name of the tool that should be used to create the + . + + + + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + + + + + Gets a value indicating whether the wrapper assembly has already been + created. + + + + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + + + + + Gets the hex version of the type library as defined in the definition + of the reference. + + + The hex version of the type library. + + + + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + + + + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + + + + + Gets the name of the type library. + + + The name of the type library. + + + + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + + + + + Gets the name of the tool that should be used to create the + . + + + The name of the tool that should be used to create the + . + + + + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + + + + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + + + + + Gets the hex version of the type library as defined in the definition + of the reference. + + + The hex version of the type library. + + + + The definition of the reference does not contain a "VersionMajor" attribute. + + -or + + The definition of the reference does not contain a "VersionMinor" attribute. + + + + + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + + + + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + + + + + Specifies the type of the project. + + + + + A Visual Basic.NET project. + + + + + A Visual C# project. + + + + + A Visual C++ project. + + + + + A Visual J# project. + + + + + MSBuild project. + + + + + Specifies the result of the build. + + + + + The build failed. + + + + + The build succeeded. + + + + + The build succeeded and the output was updated. + + + + + Visual Studio.NET 2002 + + + + + Visual Studio.NET 2003 + + + + + Visual Studio 2005 + + + + + Indentifies the physical location of a managed project. + + + + + A local project. + + + + + A web project. + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Determines whether a with the specified + GUID is in the collection, using a case-insensitive lookup. + + The GUID to locate in the collection. + + if a with GUID + is found in the collection; otherwise, + . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Remove items with the specified guid from the collection. + + The guid of the project to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Gets the with the specified GUID. + + The GUID of the to get. + + Performs a case-insensitive lookup. + + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Factory class for VS.NET projects. + + + + + Initializes a new instance of the + class. + + + + + Holds a case-insensitive list of cached projects. + + + The key of the is the path of the project + file (for web projects this can be a URL) and the value is a + instance. + + + + + Holds a case-insensitive list of cached project GUIDs. + + + The key of the is the path of the project + file (for web projects this can be a URL) and the value is the GUID + of the project. + + + + + Holds a case-insensitive list of cached project GUIDs. + + + The key of the is the path of the project + file (for web projects this can be a URL) and the value is the Xml + of the project. + + + + + Determines the output type of the project from its XML definition. + + The XML definition of the project settings. + + The output type of the project. + + + + The output type of the project is not set in the specified XML + definition. + + -or- + + The output type of the project is not supported. + + + + + + Gets the project GUID from the given + holding a <VisualStudioProject> node. + + The path of the project file. + The <VisualStudioProject> node from which the project GUID should be retrieved. + + The project GUID from specified <VisualStudioProject> node. + + + + + Gets the .ico file to use as application icon. + + + The .ico file to use as application icon, or + if no application icon should be used. + + + + + Gets the key file to use to sign ActiveX/COM wrappers. + + + The path of the key file to use to sign ActiveX/COM wrappers, + relative to the project root directory, or + if the wrapper assembly should not be signed using a key file. + + + + + Gets the key name to use to sign ActiveX/COM wrappers. + + + The name of the key container to use to sign ActiveX/COM wrappers, + or if the wrapper assembly should not be + signed using a key container. + + + + + Gets the output type of this project. + + + + + Designates when the command line should + be run. Possible values are "OnBuildSuccess", "Always" or + "OnOutputUpdated". + + + + + Contains commands to be run before a build takes place. + + + Valid commands are those in a .bat file. For more info see MSDN. + + + + + Contains commands to be ran after a build has taken place. + + + Valid commands are those in a .bat file. For more info see MSDN. + + + + + Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. + + + + + Obtains a lifetime service object to control the lifetime policy for + this instance. + + + An object of type used to control the lifetime + policy for this instance. This is the current lifetime service object + for this instance if one exists; otherwise, a new lifetime service + object initialized with a lease that will never time out. + + + + + Gets the file name of the assembly with the given assembly name. + + The assembly name of the assembly of which the file name should be returned. + + The file name of the assembly with the given assembly name. + + + + + Compiles the resource file. + + The solution configuration that is built. + + A representing the compiled resource file. + + + + + Returns a representing the compiled resource + file. + + The solution configuration that is built. + + A representing the compiled resource file. + + + Calling this method does not force compilation of the resource file. + + + + + Gets a representing the physical location + of the resource file. + + + + + Gets a representing the logical location + of the resource file in the project. + + + When the resource file is not linked, this matches the + . + + + + + Gets a value indicating whether the resource is in fact a ResX file. + + + if the resource is a ResX file; otherwise, + . + + + + + Factory class for VS.NET solutions. + + + + + Initializes a new instance of the + class. + + + + + Verifies whether the specified XML fragment represents a valid project + that is supported by this . + + XML fragment representing the project file. + + The XML fragment is not supported by this . + -or- + The XML fragment does not represent a valid project (for this ). + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + The document element of the project. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + This method is called from the ctor, and + at that time we're not sure the XML that is passed in, is indeed a + valid Visual Basic project. + + + + + Returns the project location from the specified project XML fragment. + + XML fragment representing the project file. + + The project location of the specified project XML file. + + + The project location could not be determined. + -or- + The project location is invalid. + + + + + Returns a for launching the compiler + for this project. + + The configuration to build. + The response file for the compiler. + + A for launching the compiler for + this project. + + + + + Returns a value indicating whether the project represented by the + specified XML fragment is supported by . + + XML fragment representing the project to check. + + if supports the + specified project; otherwise, . + + + + A project is identified as as Visual Basic project, if the XML + fragment at least has the following information: + + + + + ... + + + ]]> + + + + + + Gets the type of the project. + + + The type of the project. + + + + + Gets the default file extension of sources for this project. + + + For VB projects, the default file extension is ".vb". + + + + + A mapping from properties in the .vcproj file to command line arguments. + + + + + Initializes a new instance of the + class. + + + + + Gets the argument string corresponding with a configuration property + named with value . + An ignore mask can be used to eliminate some arguments from the search. + + The name of the configuration property. + The value of the configuration property. + Specify any groups that needs to be ignored. + + The argument string corresponding with a configuration property + named with value , + or if no corresponding argument exists. + + + + + Creates a mapping between configuration properties for the Visual + C++ compiler and corresponding command-line arguments. + + + A mapping between configuration properties for the Visual C++ + compiler and corresponding command-line arguments. + + + + The following configuration properties are processed by + : + + + + Category + Property + + + General + Addtional Include Directories (/I[path]) + + + General + Resolve #using References (/AI[path]) + + + Preprocessor + Preprocessor Definitions (/D[macro]) + + + Code Generation + Enable C++ Exceptions (/EHsc) + + + Precompiled Headers + Create/Use Precompiled Header + + + Precompiled Headers + Create/Use PCH Through File + + + Precompiled Headers + Precompiled Header File + + + Output Files + Assembler Output + + + Output Files + ASM List Location + + + Browse Information + Enable Browse Information + + + Browse Information + Browse File + + + Advanced + Force Includes (/FI[name]) + + + Advanced + Force #using (/FU[name]) + + + Advanced + Undefine Preprocessor Definitions (/U[macro]) + + + + + + + Creates a mapping between configuration properties for the Visual + C++ linker and corresponding command-line arguments. + + + A mapping between configuration properties for the Visual C++ + linker and corresponding command-line arguments. + + + + The following configuration properties are processed by + : + + + + Category + Property + + + General + Output File (/OUT:[file]) + + + General + Additional Library Directories (/LIBPATH:[dir]) + + + Input + Additional Dependencies + + + Input + Add Module to Assembly (/ASSEMBLYMODULE:file) + + + Input + Embed Managed Resource File (/ASSEMBLYRESOURCE:file) + + + Debugging + Generate Debug Info (/DEBUG) + + + Debugging + Generate Program Database File (/PDB:name) + + + Debugging + Generate Map File (/MAP) + + + Debugging + Map File Name (/MAP:[filename]) + + + System + Heap Reserve Size (/HEAP:reserve) + + + System + Heap Commit Size (/HEAP:reserve, commit) + + + System + Stack Reserve Size (/STACK:reserve) + + + System + Stack Commit Size (/STACK:reserve, commit) + + + + The following configuration properties are ignored: + + + + Category + Property + + + General + Show Progress (/VERBOSE, /VERBOSE:LIB) + + + General + Suppress Startup Banner (/NOLOGO) + + + + Support for the following configuration properties still needs to + be implemented: + + + + Category + Property + + + General + Ignore Import Library + + + General + Register Output + + + Input + Delay Loaded DLLs (/DELAYLOAD:[dll_name]) + + + Embedded IDL + MIDL Commands (/MIDL:[file]) + + + + + + + Gets the name of the command-line argument. + + + The name of the command-line argument. + + + + + Represents a command-line arguments of which the trailing backslashes + in the value should be duplicated. + + + + + Represents a command-line argument of which the value should be + quoted, and of which trailing backslahes should be duplicated. + + + + + Gets the string that the configuration setting should match in + order for the command line argument to be set. + + + + + Allow us to assign an argument to a specific group. + + + + + The argument is not assigned to any group. + + + + + The argument is ignored when the optimization level is set to + Minimum Size (1) or Maximum Size (2). + + + + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + + + + + Is called each time a regular expression match is found during a + operation. + + The resulting from a single regular expression match during a . + + The expanded . + + The macro is not supported. + Expansion of a given macro is not yet implemented. + + + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + + + + + A single build configuration for a Visual C++ project or for a specific + file in the project. + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro. + + + The macro is not supported. + -or- + The macro is not implemented. + -or- + The macro cannot be expanded. + + + + + Gets the value of a given setting for a specified tool. + + The name of the tool. + The name of the setting. + + The value of a setting for the specified tool, or + if the setting is not defined for the specified tool. + + + An empty setting value, which is used as a means to override the + project default, will be returned as a empty . + + + + + Gets the value of a given setting for a specified tool. + + The name of the tool. + The name of the setting. + The value to return if setting is not defined. + + The value of a setting for the specified tool, or + if the setting is not defined for + the specified tool. + + + An empty setting value, which is used as a means to override the + project default, will be returned as a empty . + + + + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + + + + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + + + + + Gets the name of the configuration, including the platform it + targets. + + + Tthe name of the configuration, including the platform it targets. + + + + + Gets the output directory. + + + + + Gets the path in which the output file will be created before its + copied to the actual output path. + + + For Visual C++ projects, the output file will be immediately + created in the output path. + + + + + Gets the name of the configuration. + + + The name of the configuration. + + + + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + + + + + Represents the configuration of a file. + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro. + + + The macro is not supported. + -or- + The macro is not implemented. + -or- + The macro cannot be expanded. + + + + + Gets the value of a given setting for a specified tool. + + The name of the tool. + The name of the setting. + The value to return if setting is not defined in both the file and project configuration. + + The value of a setting for the specified tool, or + if the setting is not defined in + both the file and project configuration. + + + + If the setting is not defined in the file configuration, then + the project level setting will be used. + + + An empty setting value, which is used as a means to override the + project default, will be returned as a empty . + + + + + + Gets a value indication whether the file should be excluded from + the build for this configuration. + + + if the file should be excluded from the + build for this configuration; otherwise, . + + + + + Gets the relative path of the file. + + + The path of the file relative to the project directory. + + + + + Get the path of the output directory relative to the project + directory. + + + + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + + + + + Gets the path for the output file. + + + The path for the output file, or if there's + no output file for this configuration. + + + + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + + + + + Visual C++ project. + + + + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + if the project output for the specified build + configuration is either a Dynamic Library (dll) or an Application + (exe), and Managed Extensions are enabled; otherwise, + . + + + + + Verifies whether the specified XML fragment represents a valid project + that is supported by this . + + XML fragment representing the project file. + + The XML fragment is not supported by this . + -or- + The XML fragment does not represent a valid project (for this ). + + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + The document element of the project. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + + + + + Build resource files for the given configuration. + + The resource files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each res file should be built + with its own file configuration. + + + + + Build Interface Definition Language files for the given + configuration. + + The IDL files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each IDL file should be built + with its own file configuration. + + + + + Merges the specified tool setting of + with . + + + The merge is suppressed when the flag $(noinherit) is defined in + . + + + + + Gets the absolute path to the object file or directory. + + The build configuration + + The absolute path to the object file or directory, or + + + We use an absolute path for the object file, otherwise + <cl> assumes a location relative to the output + directory - not the project directory. + + + + + Returns a value indicating whether the project represented by the + specified XML fragment is supported by . + + XML fragment representing the project to check. + + if supports the + specified project; otherwise, . + + + + A project is identified as as Visual C++ project, if the XML + fragment at least has the following information: + + + + + ]]> + + + + + + Removes leading and trailing quotes from the specified path. + + The path to clean. + + + + Returns the Visual Studio product version of the specified project + XML fragment. + + XML fragment representing the project to check. + + The Visual Studio product version of the specified project XML + fragment. + + + The product version could not be determined. + -or- + The product version is not supported. + + + + + Holds the files included in the project. + + + + For project files with no specific file configuration, the relative + path is added to the list. + + + For project files that have a specific file configuration, a + containing the + instance representing the file configurations is added. + + + + + + Gets the name of the Visual C++ project. + + + + + Gets the type of the project. + + + The type of the project. + + + + + Gets the path of the Visual C++ project. + + + + + Gets the directory containing the VS.NET project. + + + + + Get the location of the project. + + + . + + + For now, we only support local Visual C++ projects. + + + + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + This is a directory relative to the project directory, + named temp\. + + + + + Gets or sets the unique identifier of the Visual C++ project. + + + + + Represents a Visual C++ project configuration. + + + + + Expands the given macro. + + The macro to expand. + + The expanded macro. + + + The macro is not supported. + -or- + The macro is not implemented. + -or- + The macro cannot be expanded. + + + Expansion of a given macro is not yet implemented. + + + + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + + + + + Holds the output path for this build configuration. + + + Lazy initialized by . + + + + + Holds list of files to link in the order in which they are defined + in the project file. + + + + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + + + + + Holds the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + + + + + Holds the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + + + + + Tells the compiler which character set to use. + + + + + Gets a value indicating whether Managed Extensions for C++ are + enabled. + + + + + Gets a value indicating how MFC is used by the configuration. + + + + + Gets a value indicating how ATL is used by the configuration. + + + + + Gets the list of files to link in the order in which they are + defined in the project file. + + + + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + + + + + Gets the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + + + + + Get the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + + + + + Gets the target path for usage in macro expansion. + + + The target path, or a zero-length string if there's no output file + for this configuration. + + + + + Get the directory in which intermediate build output will be stored + for this configuration. + + + + This is a directory relative to the project directory named + obj\<configuration name>. + + + .resx and .licx files will only be recompiled if the + compiled resource files in the are not + uptodate. + + + + + + Get the path of the output directory relative to the project + directory. + + + + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + + + + + Gets the absolute path for the output file. + + + The absolute path for the output file, or + if there's no output file for this configuration. + + + + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + + + + + The type of output for a given configuration. + + + + + A Makefile. + + + + + Application (.exe). + + + + + Dynamic Library (.dll). + + + + + Static Library (.lib). + + + + + Utility. + + + + + Gets a instance representing the + absolute path to the import library to generate. + + + A representing the absolute path to the + import library to generate, or if no + import library must be generated. + + + + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + if the reference is managed for the + specified configuration; otherwise, . + + + + + Gets the name of the referenced assembly. + + + The name of the referenced assembly. + + + + + Gets the name of the tool that should be used to create the + . + + + The name of the tool that should be used to create the + . + + + + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + + + + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + + + + + Gets the hex version of the type library as defined in the definition + of the reference. + + + The hex version of the type library. + + The definition of the reference does not contain a "ControlVersion" attribute. + + + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + + + + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + + +
+
diff --git a/slips/build/tools/nant/bin/NAnt.VisualCppTasks.dll b/slips/build/tools/nant/bin/NAnt.VisualCppTasks.dll new file mode 100644 index 0000000..95df6db Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.VisualCppTasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.VisualCppTasks.xml b/slips/build/tools/nant/bin/NAnt.VisualCppTasks.xml new file mode 100644 index 0000000..d27da40 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.VisualCppTasks.xml @@ -0,0 +1,1205 @@ + + + + NAnt.VisualCppTasks + + + + + Compiles C/C++ programs using cl.exe, Microsoft's C/C++ compiler. + + + This task is intended for version 13.00.9466 of cl.exe. + + + Compiles helloworld.cpp for the Common Language Runtime. + + + + + + + ]]> + + + + + + Initializes a new instance of the class. + + + + + Compiles the sources. + + + + + Determines if the sources need to be compiled. + + + + + Determines whether the precompiled header file is up-to-date. + + + if no precompiled header file was specified; + otherwise, . + + + In order to determine accurately whether the precompile header file + is up-to-date, we'd need scan all the header files that are pulled + in. As this is not implemented right now, its safer to always + recompile. + + + + + Determines whether any file that are includes in the specified + source file has been updated after the obj was compiled. + + The source file to check. + The last write time of the compiled obj. + + The full path to the include file that was modified after the obj + was compiled, or if no include files were + modified since the obj was compiled. + + + + To determine what includes are defined in a source file, conditional + directives are not honored. + + + If a given include cannot be resolved to an existing file, then + it will be considered stable. + + + + + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + + + + + Determines the file name of the OBJ file for the specified source + file. + + The source file for which the OBJ file should be determined. + The path of the object file. + + The file name of the OBJ file for the specified source file. + + + + + Directory where all output files are placed. + + + + + Specifies the path and/or name of the generated precompiled header + file - given either relative to or as an + absolute path. + + + + + The path of the boundary file when generating/using the + specified . If a precompiled header file is + not specified then this attribute is ignored. + + + + + The mode in which the specified (if any) is + used. The default is . + + + + + Specifies whether Managed Extensions for C++ should be enabled. + The default is . + + + + + Tells the compiler to use the specified character set. + + + + + Options to pass to the compiler. + + + + + The list of files to compile. + + + + + The list of directories in which to search for include files. + + + + + Directories that the compiler will search to resolve file references + passed to the #using directive. + + + + + Specifies metadata files to reference in this compilation as an + alternative to passing a file name to #using in source code. + + + + + Macro definitions to pass to cl.exe. + Each entry will generate a /D + + + + + Macro undefines (/U) to pass to cl.exe. + + + + + A name to override the default object file name; can be either a file + or directory name. The default is the output directory. + + + + + A name for the compiler-generated PDB file; can be either a file or + directory name. The default is the output directory. + + + + + Gets the filename of the external program to start. + + The filename of the external program. + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Defines the supported modes for the use of precompiled header files. + + + + + Create a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + + + + + Automatically create a precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /YX. + + + + + Use a (previously generated) precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + + + + + Run lib.exe, Microsoft's Library Manager. + + + Create a library. + + + + + + + ]]> + + + + + + Creates the library. + + + + + Determines if the sources need to be linked. + + + + + Options to pass to the compiler. + + + + + The output file. + + + + + The module definition file. + + + + + The list of files to combine into the output file. + + + + + Symbols to add to the symbol table. + + + + + Names of default libraries to ignore. + + + + + The list of additional library directories to search. + + + + + Gets the filename of the external program to start. + + The filename of the external program. + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Links files using link.exe, Microsoft's Incremental Linker. + + + This task is intended for version 7.00.9466 of link.exe. + + + + Combine all object files in the current directory into helloworld.exe. + + + + + + + + ]]> + + + + + + Links the sources. + + + + + Determines if the output needs linking. + + + + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + + + + + Options to pass to the compiler. + + + + + Create debugging information for the .exe file or DLL. The default is + . + + + + + The output file. + + + + + A user-specified name for the program database (PDB) that the linker + creates. The default file name for the PDB has the base name of the + and the extension .pdb. + + + + + Specified DLLs for delay loading. + + + + + The list of files to combine into the output file. + + + + + The list of additional library directories to search. + + + + + Link the specified modules into this assembly. + + + + + Embed the specified resources into this assembly. + + + + + Symbols to add to the symbol table. + + + + + Names of libraries that you want the linker to ignore when it + resolves external references. + + + + + Gets the filename of the external program to start. + + The filename of the external program. + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Compiles messages using mc.exe, Microsoft's Win32 message compiler. + + + + Compile text.mc using the default options. + + + + ]]> + + + Compile text.mc, passing a path to store the header, the rc + file and some additonal options. + + + + ]]> + + + + + + Compiles the sources. + + + + + Determine if source files need re-building. + + + + + Options to pass to the compiler. + + + + + Path to store header file. The default is the project base directory. + + + + + Path to store RC file. The default is the project base directory. + + + + + Input filename. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + This tasks allows you to run MIDL.exe. + + + + This task only supports a small subset of the MIDL.EXE command line + switches, but you can use the options element to specify any other + unsupported commands you want to specify. + + + + + + + + + + + + + ]]> + + + + + + This is where the work is done. + + + + + Check output files to see if we need rebuilding. + + if a rebuild is needed; otherwise, + . + + + + Check output files to see if we need rebuilding. + + + if a rebuild is needed; otherwise, + . + + + + + Writes the response file for midl.exe. + + + + + The /acf switch allows the user to supply an + explicit ACF file name. The switch also + allows the use of different interface names in + the IDL and ACF files. + + + + + The /align switch is functionally the same as the + MIDL /Zp option and is recognized by the MIDL compiler + solely for backward compatibility with MkTypLib. + + The alignment value can be 1, 2, 4, or 8. + + + + The /app_config switch selects application-configuration + mode, which allows you to use some ACF keywords in the + IDL file. With this MIDL compiler switch, you can omit + the ACF and specify an interface in a single IDL file. + + + + + The /char switch helps to ensure that the MIDL compiler + and C compiler operate together correctly for all char + and small types. + + Can be one of signed | unsigned | ascii7 + + + + The /client switch directs the MIDL compiler to generate + client-side C source files for an RPC interface + + can be one of stub | none + + + + The /cstub switch specifies the name of the client + stub file for an RPC interface. + + + + + Specifies the file name for the generated dlldata file for a proxy + DLL. The default file name Dlldata.c is used if + is not specified. + + + + + The /env switch selects the + environment in which the application runs. + + It can take the values win32 and win64 + + + + The /Oi switch directs the MIDL compiler to + use a fully-interpreted marshaling method. + The /Oic and /Oicf switches provide additional + performance enhancements. + + + If you specify the Oi attribute, you must set it to + one of the values: + - Oi="" + - Oi="c" + - Oi="f" + - Oi="cf" + + + + + Specifies a file name for the type library generated by the MIDL + compiler. + + + + + Specifies the name of the header file. + + + + + Specifies the name of the interface identifier file for a COM + interface, overriding the default name obtained by adding _i.c + to the IDL file name. + + + + + Specifies the name of the interface proxy file for a COM interface. + + + + + Name of .IDL file to process. + + + + + Additional options to pass to midl.exe. + + + + + Macro definitions to pass to mdil.exe. + Each entry will generate a /D + + + + + Macro undefines (/U) to pass to mdil. + + + + + The list of directories in which to search for include files. + + + + + Filename of program to execute + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Compiles resources using rc.exe, Microsoft's Win32 resource + compiler. + + + + Compile text.rc to text.res using the default options. + + + + ]]> + + + + + Compile text.rc, passing an additional option. + + + + ]]> + + + + + + Compile the resource file + + + + + Determines if the resource need compiling. + + + + + Check if a resource file has been updated. + + + + + + + Options to pass to the compiler. + + + + + Output file. + + + + + The resource file to compile. + + + + + Default language ID. + + + + + The list of directories in which to search for include files. + + + + + Macro definitions to pass to rc.exe. + Each entry will generate a /d + + + + + Filename of program to execute + + + + + Arguments of program to execute + + + + + Defines the character sets that can be used by the C++ compiler. + + + + + Have the compiler determine the character set. + + + + + Unicode character set. + + + + + Multi-byte character set. + + + + + Represents a library. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with + the specified name. + + is . + + + + The name of the library. + + + + + If then the element will be processed; + otherwise, skipped. The default is . + + + + + If then the element will be skipped; + otherwise, processed. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Represents a symbol. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with + the specified name. + + is . + + + + The name of the symbol. + + + + + If then the element will be processed; + otherwise, skipped. The default is . + + + + + If then the element will be skipped; + otherwise, processed. The default is . + + + + + Contains a collection of elements. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with the specified instance. + + + + + Initializes a new instance of the class + with the specified array of instances. + + + + + Adds a to the end of the collection. + + The to be added to the end of the collection. + The position into which the new element was inserted. + + + + Adds the elements of a array to the end of the collection. + + The array of elements to be added to the end of the collection. + + + + Adds the elements of a to the end of the collection. + + The to be added to the end of the collection. + + + + Determines whether a is in the collection. + + The to locate in the collection. + + if is found in the + collection; otherwise, . + + + + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Retrieves the index of a specified object in the collection. + + The object for which the index is returned. + + The index of the specified . If the is not currently a member of the collection, it returns -1. + + + + + Inserts a into the collection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + + + Returns an enumerator that can iterate through the collection. + + + A for the entire collection. + + + + + Removes a member from the collection. + + The to remove from the collection. + + + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. + + + + Enumerates the elements of a . + + + + + Initializes a new instance of the class + with the specified . + + The collection that should be enumerated. + + + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the + first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Defines how to deal with backslashes in values of command line + arguments. + + + + + Does not perform any processing on backslashes. + + + + + Duplicates the trailing backslash. + + + + + Fixes the trailing backslash by replaces trailing double backslashes + with only one backslash and removing single trailing backslashes. + + + + + Removes all the trailing backslashes. + + + + + Groups a set of useful manipulation methods for + command-line arguments. + + + + + Performs backslash processing on the specified value using a given + method. + + The to process. + The to use. + + with backslashes processed using the given + . + + + + + Duplicates the trailing backslash. + + The input string to check and duplicate the trailing backslash if necessary. + The result string after being processed. + + Also duplicates trailing backslash in quoted value. + + + + + Fixes the trailing backslash. This function replaces the trailing double backslashes with + only one backslash. It also, removes the single trailing backslash. + + The input string. + The result string after being processed. + + + + Removes all the trailing backslashes from the input. + + The input string. + The result string without trailing backslashes. + + + + Quotes an argument value and processes backslashes using a given + . + + The argument value to quote. + The to use. + + The quoted argument value. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.Win32Tasks.dll b/slips/build/tools/nant/bin/NAnt.Win32Tasks.dll new file mode 100644 index 0000000..55ff389 Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.Win32Tasks.dll differ diff --git a/slips/build/tools/nant/bin/NAnt.Win32Tasks.xml b/slips/build/tools/nant/bin/NAnt.Win32Tasks.xml new file mode 100644 index 0000000..059eb79 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.Win32Tasks.xml @@ -0,0 +1,690 @@ + + + + NAnt.Win32Tasks + + + + + Groups a set of functions that convert Windows native filenames to + Cygwin POSIX-style pathnames and vice versa. + + + It can be used when a Cygwin program needs to pass a file name to a + native Windows program, or expects to get a file name from a native + Windows program. + + + + + Initializes a new instance of the + class with the specified and properties. + + The in which the class is used. + The set of properties to use for macro expansion. + + + + Gets the DOS (short) form of the specified path. + + The path to convert. + + The DOS (short) form of the specified path. + + cygpath could not be started. + could not be converted to a short form. + + + + Gets the Unix form of the specified path. + + The path to convert. + + The Unix form of the specified path. + + cygpath could not be started. + could not be converted to a Unix form. + + + + Gets the Windows form of the specified path. + + The path to convert. + + The Windows form of the specified path. + + cygpath could not be started. + could not be converted to a Windows form. + + + + Runs cygpath with the specified arguments and returns the result + as a . + + The arguments to pass to cygpath. + + The result of running cygpath with the specified arguments. + + + + + Factory method to return a new instance of ExecTask + + + + + + + Generates a Windows Forms Control that wraps ActiveX Controls defined + in an OCX. + + + + + ]]> + + + + + + Import the ActiveX control. + + + + + Determines whether the assembly needs to be created again. + + + if the assembly needs to be created again; + otherwise, . + + + + + Filename of the .ocx file. + + + + + Filename of the generated assembly. + + + + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + + + + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + + + + + Specifies to sign the resulting control using delayed signing. + + + + + Determines whether C# source code for the Windows Form wrapper should + be generated. The default is . + + + + + Assembly to use for Runtime Callable Wrapper rather than generating + new one [.NET 1.1 or higher]. + + + + + Indicates whether aximp supports using an existing Runtime + Callable Wrapper for a given target framework. The default is + . + + + + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + + + + + Reads a value or set of values from the Windows Registry into one or + more NAnt properties. + + + Read a single value from the registry. + + + ]]> + + Read all the registry values in a key. + + + ]]> + + + + + + read the specified registry value + + + + + Returns the hive for a given key. + + + + + The hive for a given key. + + + + + Returns the key for a given registry hive. + + The registry hive to return the key for. + + The key for a given registry hive. + + + + + The property to set to the specified registry key value. + If this attribute is used then a single value will be read. + + + + + The prefix to use for the specified registry key values. + If this attribute is used then all registry values will be read and stored as properties with this prefix. + + + Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties + + + + + The registry key to read, including the path. + + + SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot + + + + + Space separated list of registry hives to search for . + For a list of possible values, see . The + default is . + + + + + + + + Registers an assembly, or set of assemblies for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register types in a single assembly. + + + + ]]> + + + + + Register types of an assembly and generate a type library containing + definitions of accessible types defined within the assembly. + + + + ]]> + + + + + Register types of set of assemblies at once, while specifying a set + of reference assemblies. + + + + + + + + + + + + ]]> + + + + + + Updates the of the specified + . + + The of which the should be updated. + + + + Registers or unregisters a single assembly, or a group of assemblies. + + + + + The name of the file to register. This is provided as an alternate + to using the task's . + + + + + Registry file to export to instead of entering the types directly + into the registry. + + + + + Set the code base registry setting. + + + + + Only refer to already registered type libraries. + + + + + Export the assemblies to the specified type library and register it. + + + + + Unregister the assembly. The default is . + + + + + The set of assemblies to register, or unregister. + + + + + The set of assembly references. + + + + + Gets the working directory for the application. + + + The working directory for the application. + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + + + + + Exports a .NET assembly to a type library that can be used from unmanaged + code (wraps Microsoft's tlbexp.exe). + + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Export DotNetAssembly.dll to LegacyCOM.dll. + + + ]]> + + + + + + Exports the type library. + + + + + Determines whether the assembly needs to be exported to a type + library again. + + + if the assembly needs to be exported to a + type library; otherwise, . + + + + + Specifies the assembly for which to export a type library. + + + The assembly for which to export a type library. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the name of the type library file to generate. + + + The name of the type library file to generate. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the file used to determine capitalization of names in a + type library. + + + The file used to determine capitalization of names in a type library. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + + Imports a type library to a .NET assembly (wraps Microsoft's tlbimp.exe). + + + + This task lets you easily create interop assemblies. By default, it will + not reimport if the underlying COM TypeLib or reference has not changed. + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Import LegacyCOM.dll to DotNetAssembly.dll. + + + ]]> + + + + + Generate an assembly named "Interop.MSVidCtlLib.dll" for the + MS Video Control 1.0 Type Library, transforming any [out, retval] + parameters of methods on dispinterfaces in the type library into + return values in the managed library. + + + + + + + + ]]> + + + + + + Imports the type library to a .NET assembly. + + + + + Returns the path of the type library, removing the identifier of + the type library from the specified string. + + The path from which to extract the path of the type library. + + The path of the type library without the type library identifier. + + + An example of a path which includes the identifier of the type + library (in this case "2") is + C:\WINDOWS\system32\msvidctl.dll\2. + + + + + Determines whether the type library needs to be imported again. + + + if the type library needs to be imported; + otherwise, . + + + + + Specifies the name of the output file. + + + The name of the output file. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the namespace in which to produce the assembly. + + + The namespace in which to produce the assembly. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the version number of the assembly to produce. + + + + The version number of the assembly to produce. + + + The version number should be in the format major.minor.build.revision. + + + See the Microsoft.NET Framework SDK documentation for details. + + + + + + Specifies whether the resulting assembly should be signed with a + strong name using delayed signing. The default is . + + + if the resulting assembly should be signed + with a strong name using delayed signing; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether a primary interop assembly should be produced for + the specified type library. The default is . + + + if a primary interop assembly should be + produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies the assembly files to use to resolve references to types + defined outside the current type library. + + + The assembly files to use to resolve references to types defined + outside the current type library. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether a type library should not be imported if all + references within the current assembly or the reference assemblies + cannot be resolved. The default is . + + + if a type library should not be imported if + all references cannot be resolved; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether to import a COM style SafeArray as a managed + class type. The default is . + + + if a COM style SafeArray should be imported + as a managed class type; otherwise, + . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies how to transform the metadata [.NET 1.1 or higher]. + + + + + Specifies the source type library that gets passed to the type + library importer. + + + The source type library that gets passed to the type library + importer. + + See the Microsoft.NET Framework SDK documentation for details. + + + + Specifies whether interfaces should be produced without .NET Framework + security checks. The default is . + + + if interfaces without .NET Framework security + checks should be produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. + + + + Indicates whether tlbimp supports transforming metadata for + a given target framework. The default is . + + + + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + + + + diff --git a/slips/build/tools/nant/bin/NAnt.exe b/slips/build/tools/nant/bin/NAnt.exe new file mode 100644 index 0000000..289c87f Binary files /dev/null and b/slips/build/tools/nant/bin/NAnt.exe differ diff --git a/slips/build/tools/nant/bin/NAnt.exe.config b/slips/build/tools/nant/bin/NAnt.exe.config new file mode 100644 index 0000000..15162f9 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.exe.config @@ -0,0 +1,1918 @@ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + sn + + + lc + + + false + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + sn + + + lc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + + + true + true + true + true + + + true + true + + + sn + + + lc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Framework directory for .NET 3.5 does not exist. + + The Reference Assemblies directory for .NET 3.5 does not exist. + + + + ${path::combine(frameworkDirectoryV35,'csc.exe')} + true + true + true + true + true + true + true + + + ${path::combine(frameworkDirectoryV35,'vbc.exe')} + true + true + true + true + true + true + true + true + + + true + + + true + true + true + true + + + true + true + + + ${path::combine(sdkInstallRoot, 'bin/al.exe')} + + + sn + + + lc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The .NET Framework 1.1 SDK is not installed. + + + + true + true + true + + + cfresgen + + + sn + + + lc + + + + + + + + + + + + + + + + + + + + + + + + + + + The .NET Framework 2.0 SDK is not installed. + + + + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + + + true + true + + + sn + + + lc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + + + true + + + true + true + true + true + + + true + true + + + sn + + + lc + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + ${csc.tool} + true + true + true + ${csc.supportsdocgeneration} + true + true + true + true + + + mjs + true + + + ${mbas.tool} + true + + + ${resgen.tool} + true + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + gmcs + true + true + true + ${csc.supportsdocgeneration} + true + true + true + true + + + mjs + strict + + + vbnc} + true + + + ${resgen.tool} + true + ${resgen.supportsexternalfilereferences} + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + gmcs + true + linq + true + true + true + true + true + true + true + + + mjs + strict + + + vbnc + true + + + true + true + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + smcs + true + true + true + true + true + true + true + true + + + true + true + + + sn + + + false + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + sn + + + false + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/. + + + + + + + + + + + + + + + + true + + + ${path::combine(prefix, 'lib/mono/1.0/mcs.exe')} + true + true + true + ${csc.supportsdocgeneration} + true + true + true + true + + + mjs + true + + + ${path::combine(prefix, 'lib/mono/1.0/mbas.exe')} + true + + + ${resgen.tool} + true + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/. + + + + + + + + + + + + + + + + + + + + + true + + + gmcs + true + true + true + ${csc.supportsdocgeneration} + true + true + true + true + + + mjs + strict + + + vbnc + true + + + ${resgen.tool} + true + ${resgen.supportsexternalfilereferences} + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/. + + + + + + + + true + + + gmcs + true + linq + true + true + true + true + true + true + true + + + mjs + strict + + + vbnc + true + + + true + true + + + sn + true + + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/. + + + + + + + smcs + true + true + true + true + true + true + true + true + + + true + true + + + sn + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/slips/build/tools/nant/bin/NAnt.xml b/slips/build/tools/nant/bin/NAnt.xml new file mode 100644 index 0000000..286dda1 --- /dev/null +++ b/slips/build/tools/nant/bin/NAnt.xml @@ -0,0 +1,78 @@ + + + + NAnt + + + + + Stub used to created and launch real ConsoleDriver + class in Core assembly. + + + + + Entry point for executable + + Command Line arguments + The result of the real execution + + + + Constructs the privatebinpath. + + + + For the common version dir, we do not use the framework version + as defined in the NAnt configuration file but the CLR version + since the assemblies in that directory are not specific to a + certain family and the framwork version might differ between + families (eg. mono 1.0 == .NET 1.1). + + + The runtime framework. + The base directory of the domain. + + The privatebinpath. + + + + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + + + + + Helper class for invoking the application entry point in NAnt.Core + and passing the command-line arguments. + + + + + Initializes a new instance of the + class with the specified command-line arguments. + + The commandline arguments passed to NAnt.exe. + Directories relative to the base directory of the AppDomain to probe for missing assembly references. + + + + Invokes the application entry point in NAnt.Core. + + + + + Gets the status that the build process returned when it exited. + + + The code that the build process specified when it terminated. + + + + diff --git a/slips/build/tools/nant/bin/NDoc.Documenter.NAnt.dll b/slips/build/tools/nant/bin/NDoc.Documenter.NAnt.dll new file mode 100644 index 0000000..13cfe41 Binary files /dev/null and b/slips/build/tools/nant/bin/NDoc.Documenter.NAnt.dll differ diff --git a/slips/build/tools/nant/bin/SLiNgshoT.Core.dll b/slips/build/tools/nant/bin/SLiNgshoT.Core.dll new file mode 100644 index 0000000..8a96be8 Binary files /dev/null and b/slips/build/tools/nant/bin/SLiNgshoT.Core.dll differ diff --git a/slips/build/tools/nant/bin/SLiNgshoT.exe b/slips/build/tools/nant/bin/SLiNgshoT.exe new file mode 100644 index 0000000..16bdf79 Binary files /dev/null and b/slips/build/tools/nant/bin/SLiNgshoT.exe differ diff --git a/slips/build/tools/nant/bin/SourceSafe.Interop.dll b/slips/build/tools/nant/bin/SourceSafe.Interop.dll new file mode 100644 index 0000000..85493ae Binary files /dev/null and b/slips/build/tools/nant/bin/SourceSafe.Interop.dll differ diff --git a/slips/build/tools/nant/bin/Vitreo.Nant.dll b/slips/build/tools/nant/bin/Vitreo.Nant.dll new file mode 100644 index 0000000..df6d217 Binary files /dev/null and b/slips/build/tools/nant/bin/Vitreo.Nant.dll differ diff --git a/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll b/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll new file mode 100644 index 0000000..2d5b8ab Binary files /dev/null and b/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll differ diff --git a/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml b/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml new file mode 100644 index 0000000..21354a7 --- /dev/null +++ b/slips/build/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml @@ -0,0 +1,37 @@ + + + + NAnt.MSBuild + + + + + Functions to return information for MSBuild system. + + + + + + + + Test whether project is VS2005 project and could be built using <msbuild> + + The name or path of the project file (csproj, vbproj, ...). + + True, if it is msbuild project, False otherwise. + + + + + Initialize is guaranteed to be called by MSBuild at the start of the build + before any events are raised. + + + + + Analyses Microsoft Visual Studio .NET 2005 (Whidbey) solution files. + !! FOR NOW IT IS PLAIN COPY OF EVERETT (2003) !! + + + + diff --git a/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.Console.dll b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.Console.dll new file mode 100644 index 0000000..fcca99e Binary files /dev/null and b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.Console.dll differ diff --git a/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.dll b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.dll new file mode 100644 index 0000000..fcd2d1a Binary files /dev/null and b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpCvsLib.dll differ diff --git a/slips/build/tools/nant/bin/lib/ICSharpCode.SharpZipLib.dll b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000..77bafe8 Binary files /dev/null and b/slips/build/tools/nant/bin/lib/ICSharpCode.SharpZipLib.dll differ diff --git a/slips/build/tools/nant/bin/lib/NUnitCore.dll b/slips/build/tools/nant/bin/lib/NUnitCore.dll new file mode 100644 index 0000000..0f1873c Binary files /dev/null and b/slips/build/tools/nant/bin/lib/NUnitCore.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Core.dll b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Core.dll new file mode 100644 index 0000000..84931f6 Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Core.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll new file mode 100644 index 0000000..bcda527 Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll new file mode 100644 index 0000000..2132a5c Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/nunit.core.dll b/slips/build/tools/nant/bin/lib/net/2.0/nunit.core.dll new file mode 100644 index 0000000..a11e623 Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/nunit.core.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/nunit.framework.dll b/slips/build/tools/nant/bin/lib/net/2.0/nunit.framework.dll new file mode 100644 index 0000000..44704bd Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/nunit.framework.dll differ diff --git a/slips/build/tools/nant/bin/lib/net/2.0/nunit.util.dll b/slips/build/tools/nant/bin/lib/net/2.0/nunit.util.dll new file mode 100644 index 0000000..8fff811 Binary files /dev/null and b/slips/build/tools/nant/bin/lib/net/2.0/nunit.util.dll differ diff --git a/slips/build/tools/nant/bin/log4net.dll b/slips/build/tools/nant/bin/log4net.dll new file mode 100644 index 0000000..f377286 Binary files /dev/null and b/slips/build/tools/nant/bin/log4net.dll differ diff --git a/slips/build/tools/nant/bin/scvs.exe b/slips/build/tools/nant/bin/scvs.exe new file mode 100644 index 0000000..34da1bc Binary files /dev/null and b/slips/build/tools/nant/bin/scvs.exe differ diff --git a/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.dll b/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.dll new file mode 100644 index 0000000..e6f83e8 Binary files /dev/null and b/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.dll differ diff --git a/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.xml b/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.xml new file mode 100644 index 0000000..68fbb77 --- /dev/null +++ b/slips/build/tools/rhino.mocks/bin/Rhino.Mocks.xml @@ -0,0 +1,7677 @@ + + + + Rhino.Mocks + + + + + What should BackToRecord clear + + + + + Nothing + + + + + Event subscribers for this instance + + + + + Methods that should be forwarded to the base class implementation + + + + + Properties that should behave like properties + + + + + Remove al the behavior of the object + + + + + Interface for constraints + + + + + determains if the object pass the constraints + + + + + And operator for constraints + + + + + Not operator for constraints + + + + + Or operator for constraints + + + + + Allow overriding of || or && + + + + + + + + + Allow overriding of || or && + + + + + + + + + Gets the message for this constraint + + + + + + + Constrain that the public field matches another constraint. + + + + + Creates a new instance. + + Name of the public field. + Constraint to place on the public field value. + + + + Creates a new instance, specifying a disambiguating + for the public field. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + Constraint to place on the public field value. + + + + Determines if the object passes the constraint. + + + + + Gets the message for this constraint + + + + + + + Constrain that the public field has a specified value + + + + + Creates a new instance. + + Name of the public field. + Expected value. + + + + Creates a new instance, specifying a disambiguating + for the public field. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + Expected value. + + + + Constrain that the property matches another constraint. + + + + + Creates a new instance. + + Name of the property. + Constraint to place on the property value. + + + + Creates a new instance, specifying a disambiguating + for the property. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + Constraint to place on the property value. + + + + Determines if the object passes the constraint. + + + + + Gets the message for this constraint + + + + + + + Constrain that the property has a specified value + + + + + Creates a new instance. + + Name of the property. + Expected value. + + + + Creates a new instance, specifying a disambiguating + for the property. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + Expected value. + + + + Constrain that the parameter must be of the specified type + + + + + Creates a new instance. + + Type. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that determines whether an object is the same object as another. + + + + + Creates a new instance. + + Obj. + + + + Determines if the object passes the constraints. + + + + + Gets the message for this constraint. + + + + + Evaluate a parameter using constraints + + + + + Create new instance + + + + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constrain that the list contains the same items as the parameter list + + + + + Creates a new instance. + + In list. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constrain that the parameter is one of the items in the list + + + + + Creates a new instance. + + In list. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constrain that the object is inside the parameter list + + + + + Creates a new instance. + + In list. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Applies another AbstractConstraint to the collection count. + + + + + Creates a new instance. + + The constraint that should be applied to the collection count. + + + + Determines if the parameter conforms to this constraint. + + + + + Gets the message for this constraint. + + + + + Applies another AbstractConstraint to a specific list element. + + + + + Creates a new instance. + + The zero-based index of the list element. + The constraint that should be applied to the list element. + + + + Determines if the parameter conforms to this constraint. + + + + + Gets the message for this constraint + + + + + + + Combines two constraints, constraint pass if either is fine. + + + + + Creates a new instance. + + C1. + C2. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Negate a constraint + + + + + Creates a new instance. + + C1. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Combines two constraints + + + + + + + Creates a new instance. + + C1. + C2. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constrain the argument to validate according to regex pattern + + + + + Creates a new instance. + + Pattern. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that evaluate whatever an argument contains the specified string. + + + + + Creates a new instance. + + Inner string. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that evaluate whatever an argument ends with the specified string + + + + + Creates a new instance. + + End. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that evaluate whatever an argument start with the specified string + + + + + Creates a new instance. + + Start. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that evaluate whatever an object equals another + + + + + Creates a new instance. + + Obj. + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that always returns true + + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Constraint that evaluate whatever a comparable is greater than another + + + + + Creates a new instance. + + + + + determains if the object pass the constraints + + + + + Gets the message for this constraint + + + + + + + Central location for constraints for object's public fields + + + + + Constrains the parameter to have a public field with the specified value + + Name of the public field. + Expected value. + + + + + + Constrains the parameter to have a public field with the specified value. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + Expected value. + + + + + + Constrains the parameter to have a public field satisfying a specified constraint. + + Name of the public field. + Constraint for the public field. + + + + Constrains the parameter to have a public field satisfying a specified constraint. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + Constraint for the public field. + + + + Determines whether the parameter has the specified public field and that it is null. + + Name of the public field. + + + + + + Determines whether the parameter has the specified public field and that it is null. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + + + + + + Determines whether the parameter has the specified public field and that it is not null. + + Name of the public field. + + + + + + Determines whether the parameter has the specified public field and that it is not null. + + The type that declares the public field, used to disambiguate between public fields. + Name of the public field. + + + + + + Central location for constraints + + + + + Evaluate a greater than constraint for . + + The object the parameter should be greater than + + + + Evaluate a less than constraint for . + + The object the parameter should be less than + + + + Evaluate a less than or equal constraint for . + + The object the parameter should be less than or equal to + + + + Evaluate a greater than or equal constraint for . + + The object the parameter should be greater than or equal to + + + + Evaluate an equal constraint for . + + The object the parameter should equal to + + + + Evaluate a not equal constraint for . + + The object the parameter should not equal to + + + + Evaluate a same as constraint. + + The object the parameter should the same as. + + + + Evaluate a not same as constraint. + + The object the parameter should not be the same as. + + + + A constraints that accept anything + + + + + + + A constraint that accept only nulls + + + + + + + A constraint that accept only non null values + + + + + + + A constraint that accept only value of the specified type + + + + + A constraint that accept only value of the specified type + + + + + Evaluate a parameter using a predicate + + The predicate to use + + + + Central location for constraints about lists and collections + + + + + Determines whether the specified obj is in the paramter. + The parameter must be IEnumerable. + + Obj. + + + + + + Determains whatever the parameter is in the collection. + + + + + Determains that the parameter collection is identical to the specified collection + + + + + Determines that the parameter collection has the specified number of elements. + + The constraint that should be applied to the collection count. + + + + Determines that an element of the parameter collections conforms to another AbstractConstraint. + + The zero-based index of the list element. + The constraint which should be applied to the list element. + + + + Central location for constraints for object's properties + + + + + Constrains the parameter to have property with the specified value + + Name of the property. + Expected value. + + + + + + Constrains the parameter to have property with the specified value. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + Expected value. + + + + + + Constrains the parameter to have a property satisfying a specified constraint. + + Name of the property. + Constraint for the property. + + + + Constrains the parameter to have a property satisfying a specified constraint. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + Constraint for the property. + + + + Determines whether the parameter has the specified property and that it is null. + + Name of the property. + + + + + + Determines whether the parameter has the specified property and that it is null. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + + + + + + Determines whether the parameter has the specified property and that it is not null. + + Name of the property. + + + + + + Determines whether the parameter has the specified property and that it is not null. + + The type that declares the property, used to disambiguate between properties. + Name of the property. + + + + + + Central location for all text related constraints + + + + + Constrain the argument to starts with the specified string + + + + + Constrain the argument to end with the specified string + + + + + Constrain the argument to contain the specified string + + + + + Constrain the argument to validate according to regex pattern + + + + + An expectaton violation was detected. + + + + + Creates a new instance. + + Message. + + + + Serialization constructor + + + + + Signals that an object was call on a mock repostiroy which doesn't + belong to this mock repository or not a mock + + + + + Creates a new instance. + + Message. + + + + Serialization constructor + + + + + Allows to set expectation on methods that has return values. + For methods with void return value, you need to use LastCall + + + + + A delegate that execute an action + + + + + The method options for the last call on /any/ proxy on /any/ repository on the current thread. + This method if not safe for multi threading scenarios, use . + + + + + Accepts a delegate that will execute inside the method, and then return the resulting + instance. + It is expected to be used with anonymous delegates / lambda expressions and only one + method should be called. + + + IService mockSrv = mocks.CreateMock(typeof(IService)) as IService; + Expect.Call(delegate{ mockSrv.Start(); }).Throw(new NetworkException()); + ... + + + + + Get the method options for the last method call on the mockInstance. + + + + + Interface to validate that a method call is correct. + + + + + Validate the arguments for the method. + This method can be called numerous times, so be careful about side effects + + The arguments with which the method was called + + + + Add an actual method call to this expectation + + + + + Returns the return value or throw the exception and setup any output / ref parameters + that has been set. + + + + + Gets the error message. + + + + + + + Range of expected calls + + + + + Number of call actually made for this method + + + + + If this expectation is still waiting for calls. + + + + + The return value for a method matching this expectation + + + + + Gets or sets the exception to throw on a method matching this expectation. + + + + + Gets a value indicating whether this instance's action is staisfied. + A staisfied instance means that there are no more requirements from + this method. A method with non void return value must register either + a return value or an exception to throw. + + + + + Gets the method this expectation is for. + + + + + Gets or sets what special condtions there are for this method + repeating. + + + + + Gets a value indicating whether this expectation was satisfied + + + + + Specify whatever this expectation has a return value set + You can't check ReturnValue for this because a valid return value include null. + + + + + An action to execute when the method is matched. + + + + + Set the out / ref parameters for the method call. + The indexing is zero based and ignores any non out/ref parameter. + It is possible not to pass all the parameters. This method can be called only once. + + + + + Documentation Message + + + + + Gets the invocation for this expectation + + The invocation. + + + + Abstract class that holds common information for + expectations. + + + + + Number of actuall calls made that passed this expectation + + + + + Range of expected calls that should pass this expectation. + + + + + The return value for a method matching this expectation + + + + + The exception to throw on a method matching this expectation. + + + + + The method this expectation is for. + + + + + The return value for this method was set + + + + + Whether this method will repeat + unlimited number of times. + + + + + A delegate that will be run when the + expectation is matched. + + + + + The arguments that matched this expectation. + + + + + Documentation message + + + + + The method originalInvocation + + + + + Get the hash code + + + + + Add an actual method call to this expectation + + + + + Returns the return value or throw the exception and setup output / ref parameters + + + + + Validate the arguments for the method on the child methods + + The arguments with which the method was called + + + + Creates a new instance. + + The originalInvocation for this method, required because it contains the generic type infromation + + + + Creates a new instance. + + Expectation. + + + + Validate the arguments for the method on the child methods + + The arguments with which the method was called + + + + Determines if this object equal to obj + + + + + The error message for these arguments + + + + + Asserts that the delegate has the same parameters as the expectation's method call + + + + + Setter for the outpur / ref parameters for this expecataion. + Can only be set once. + + + + + Specify whatever this expectation has a return value set + You can't check ReturnValue for this because a valid return value include null. + + + + + Gets the method this expectation is for. + + + + + Gets the originalInvocation for this expectation + + The originalInvocation. + + + + Gets or sets what special condtions there are for this method + + + + + Range of expected calls + + + + + Number of call actually made for this method + + + + + If this expectation is still waiting for calls. + + + + + Gets a value indicating whether this expectation was satisfied + + + + + The return value for a method matching this expectation + + + + + An action to execute when the method is matched. + + + + + Gets or sets the exception to throw on a method matching this expectation. + + + + + Gets a value indicating whether this instance's action is staisfied. + A staisfied instance means that there are no more requirements from + this method. A method with non void return value must register either + a return value or an exception to throw or an action to execute. + + + + + Documentation message + + + + + Gets the error message. + + + + + + + Expectation that matchs any arguments for the method. + + + + + Creates a new instance. + + Invocation for this expectation + + + + Creates a new instance. + + Expectation. + + + + Validate the arguments for the method. + + The arguments with which the method was called + + + + Determines if the object equal to expectation + + + + + Get the hash code + + + + + Gets the error message. + + + + + + + Summary description for ArgsEqualExpectation. + + + + + Creates a new instance. + + Expected args. + The invocation for this expectation + + + + Validate the arguments for the method. + + The arguments with which the method was called + + + + Determines if the object equal to expectation + + + + + Get the hash code + + + + + Gets the error message. + + + + + + + Get the expected args. + + + + + Call a specified callback to verify the expectation + + + + + Creates a new instance. + + Expectation. + Callback. + + + + Creates a new instance. + + Invocation for this expectation + Callback. + + + + Validate the arguments for the method on the child methods + + The arguments with which the method was called + + + + Determines if the object equal to expectation + + + + + Get the hash code + + + + + Gets the error message. + + + + + + + Expect the method's arguments to match the contraints + + + + + Creates a new instance. + + Invocation for this expectation + Constraints. + + + + Creates a new instance. + + Expectation. + Constraints. + + + + Validate the arguments for the method. + + The arguments with which the method was called + + + + Determines if the object equal to expectation + + + + + Get the hash code + + + + + Gets the error message. + + + + + + + Log expectations - allows to see what is going on inside Rhino Mocks + + + + + Logs the expectation as is was recorded + + The invocation. + The expectation. + + + + Logs the expectation as it was recorded + + The invocation. + The expectation. + + + + Logs the unexpected method call. + + The invocation. + The message. + + + + Doesn't log anything, just makes happy noises + + + + + Operation on a remoting proxy + + + It is not possible to directly communicate to a real proxy via transparent proxy. + Transparent proxy impersonates a user type and only methods of that user type are callable. + The only methods that are guaranteed to exist on any transparent proxy are methods defined + in Object: namely ToString(), GetHashCode(), and Equals()). + + These three methods are the only way to tell the real proxy to do something. + Equals() is the most suitable of all, since it accepts an arbitrary object parameter. + The RemotingProxy code is built so that if it is compared to an IRemotingProxyOperation, + transparentProxy.Equals(operation) will call operation.Process(realProxy). + This way we can retrieve a real proxy from transparent proxy and perform + arbitrary operation on it. + + + + + Generates remoting proxies and provides utility functions + + + + + Create the proxy using remoting + + + + + Check whether an object is a transparent proxy with a RemotingProxy behind it + + Object to check + true if the object is a transparent proxy with a RemotingProxy instance behind it, false otherwise + We use Equals() method to communicate with the real proxy behind the object. + See IRemotingProxyOperation for more details + + + + Retrieve a mocked object from a transparent proxy + + Transparent proxy with a RemotingProxy instance behind it + Mocked object associated with the proxy + We use Equals() method to communicate with the real proxy behind the object. + See IRemotingProxyOperation for more details + + + + Implementation of IInvocation based on remoting proxy + + Some methods are marked NotSupported since they either don't make sense + for remoting proxies, or they are never called by Rhino Mocks + + + + Rudimetry implementation that simply logs methods calls as text. + + + + + Initializes a new instance of the class. + + The writer. + + + + Logs the expectation as is was recorded + + The invocation. + The expectation. + + + + Logs the expectation as it was recorded + + The invocation. + The expectation. + + + + Logs the unexpected method call. + + The invocation. + The message. + + + + Different actions on this mock + + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Verify that this mock expectations have passed. + + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Get the options for the last method call + + + + + Set the exception to throw when Verify is called. + This is used to report exception that may have happened but where caught in the code. + This way, they are reported anyway when Verify() is called. + + + + + Gets the matching verify state for this state + + + + + Get the options for the last method call + + + + + Records all the expectations for a mock + + + + + Get the options for the last method call + + + + + Set the exception to throw when Verify is called. + This is used to report exception that may have happened but where caught in the code. + This way, they are reported anyway when Verify() is called. + + + + + Creates a new instance. + + Repository. + The proxy that generates the method calls + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Verify that this mock expectations have passed. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Asserts the previous method is closed (had an expectation set on it so we can replay it correctly) + + + + + Gets the last expectation. + + + + + Gets the total method calls count. + + + + + Get the options for the last method call + + + + + Gets the matching verify state for this state + + + + + Behave like a stub, all properties and events acts normally, methods calls + return default values by default (but can use expectations to set them up), etc. + + + + + Initializes a new instance of the class. + + The proxy that generates the method calls + Repository. + + + + We don't care much about expectations here, so we will remove the exepctation if + it is not closed. + + + + + Verify that we can move to replay state and move + to the reply state. + + + + + + + Validate all expectations on a mock + + + + + The repository for this state + + + + + The proxy object for this state + + + + + Get the options for the last method call + + + + + Creates a new instance. + + The previous state for this method + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Add a method call for this state' mock. + This allows derived method to cleanly get a the setupresult behavior while adding + their own. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Set the exception to throw when Verify is called. + This is used to report exception that may have happened but where caught in the code. + This way, they are reported anyway when Verify() is called. + + + + + Verify that this mock expectations have passed. + + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Get the options for the last method call + + + + + Gets the matching verify state for this state + + + + + Validate expectations on recorded methods, but in general completely ignoring them. + Similar to except that it would return a + when BackToRecord is called. + + + + + Initializes a new instance of the class. + + The previous state for this method + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Gets a mock state that match the original mock state of the object. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Marker interface used to indicate that this is a partial mock. + + + + + Options for CallOriginalMethod + + + + + No expectation is created, the method will be called directly + + + + + Normal expectation is created, but when the method is later called, it will also call the original method + + + + + Adds optional new usage: + using(mockRepository.Record()) { + Expect.Call(mock.Method()).Return(retVal); + } + using(mockRepository.Playback()) { + // Execute code + } + N.B. mockRepository.ReplayAll() and mockRepository.VerifyAll() + calls are taken care of by Record/Playback + + + Creates proxied instances of types. + + + + + Delegate: CreateMockState + This is used internally to cleanly handle the creation of different + RecordMockStates. + + + + + This is used to record the last repository that has a method called on it. + + + + + this is used to get to the last proxy on this repository. + + + + + For mock delegates, maps the proxy instance from intercepted invocations + back to the delegate that was originally returned to client code, if any. + + + + + All the proxies in the mock repositories + + + + + This is here because we can't put it in any of the recorders, since repeatable methods + have no orderring, and if we try to handle them using the usual manner, we would get into + wierd situations where repeatable method that was defined in an orderring block doesn't + exists until we enter this block. + + + + + + + + + + + + + + + + + Creates a new instance. + + + + + Move the repository to ordered mode + + + + + Move the repository to un-ordered mode + + + + + Creates a mock for the specified type. + + Type. + Arguments for the class' constructor, if mocking a concrete class + + + + Creates a mock from several types, with strict semantics. + Only may be a class. + + + + + Creates a mock from several types, with strict semantics. + Only may be a class. + + The main type to mock. + Extra interface types to mock. + Arguments for the class' constructor, if mocking a concrete class. + + + + Creates a mock from several types, with dynamic semantics. + Only may be a class. + + The main type to mock. + Extra interface types to mock. + + + + Creates a mock from several types, with dynamic semantics. + Only may be a class. + + The main type to mock. + Extra interface types to mock. + Arguments for the class' constructor, if mocking a concrete class. + + + + Creates a dynamic mock for the specified type. + + Type. + Arguments for the class' constructor, if mocking a concrete class + + + + Creates a mock object that defaults to calling the class methods. + + Type. + Arguments for the class' constructor. + + + + Creates a mock object that defaults to calling the class methods. + + Type. + Extra interface types to mock. + + + + Creates a mock object that defaults to calling the class methods. + + Type. + Extra interface types to mock. + Arguments for the class' constructor. + + + + Creates a mock object using remoting proxies + + Type to mock - must be MarshalByRefObject + Mock object + Proxy mock can mock non-virtual methods, but not static methods + Creates the mock state for this proxy + + + + Cause the mock state to change to replay, any further call is compared to the + ones that were called in the record state. + + the object to move to replay state + + + + Move the mocked object back to record state. + Will delete all current expectations! + + + + + Move the mocked object back to record state. + Will delete all current expectations, but allows more granularity about how + it would behave with regard to the object state. + + + + + Verify that all the expectations for this object were fulfilled. + + the object to verify the expectations for + + + + Get the method options for the last call on + mockedInstance. + + The mock object + Method options for the last call + + + + Maps an invocation proxy back to the mock object instance that was originally + returned to client code which might have been a delegate to this proxy. + + The mock object proxy from the intercepted invocation + The mock object + + + + This is provided to allow advance extention functionality, where Rhino Mocks standard + functionality is not enough. + + The type to mock + Delegate that create the first state of the mocked object (usualy the record state). + Additional types to be implemented, this can be only interfaces + optional arguments for the constructor + + + + + + Method: GetMockedObject + Get an IProxy from a mocked object instance, or throws if the + object is not a mock object. + + + + + Method: GetMockedObjectOrNull + Get an IProxy from a mocked object instance, or null if the + object is not a mock object. + + + + + Pops the recorder. + + + + + Pushes the recorder. + + New recorder. + + + + All the mock objects in this repository will be moved + to record state. + + + + + All the mock objects in this repository will be moved + to record state. + + + + + Replay all the mocks from this repository + + + + + Verify all the mocks from this repository + + + + + Set the exception to be thrown when verified is called. + + + + + Creates a mock for the spesified type. + + Arguments for the class' constructor, if mocking a concrete class + + + + Creates a dynamic mock for the specified type. + + Arguments for the class' constructor, if mocking a concrete class + + + + Creates a mock object from several types. + + + + + Create a mock object from several types with dynamic semantics. + + + + + Create a mock object from several types with partial semantics. + + + + + Create a mock object from several types with strict semantics. + + Extra interface types to mock. + Arguments for the class' constructor, if mocking a concrete class + + + + Create a mock object from several types with dynamic semantics. + + Extra interface types to mock. + Arguments for the class' constructor, if mocking a concrete class + + + + Create a mock object from several types with partial semantics. + + Extra interface types to mock. + Arguments for the class' constructor, if mocking a concrete class + + + + Create a mock object with from a class that defaults to calling the class methods + + Arguments for the class' constructor, if mocking a concrete class + + + + Create a stub object, one that has properties and events ready for use, and + can have methods called on it. It requires an explicit step in order to create + an expectation for a stub. + + The arguments for constructor. + + + + Create a stub object, one that has properties and events ready for use, and + can have methods called on it. It requires an explicit step in order to create + an expectation for a stub. + + The type. + The arguments for constructor. + + + + + + Generates a stub without mock repository + + The arguments for constructor. + + + + + + Generates the stub without mock repository + + The type. + The arguments for constructor. + + + + Gets the recorder. + + + + + + + Gets the replayer for this repository. + + + + + + + Gets the last proxy which had a method call. + + + + + Utility class for dealing with messing generics scenarios. + + + + + There are issues with trying to get this to work correctly with open generic types, since this is an edge case, + I am letting the runtime handle it. + + + + + Gets the real type, including de-constructing and constructing the type of generic + methods parameters. + + The type. + The invocation. + + + + + + Because we need to support complex types here (simple generics were handled above) we + need to be aware of the following scenarios: + List[T] and List[Foo[T]] + + + + + ExpectationsList + + + + + Dictionary + + + + + Dictionary class + + + + + Create a new instance of ProxyStateDictionary + + + + Interface to allows to call a method and immediatly get it's options. + + + + + Get the method options for the call + + The method call should go here, the return value is ignored + + + + Allows to call a method and immediatly get it's options. + + + + + Creates a new instance. + + + + + Get the method options for the call + + The method call should go here, the return value is ignored + + + + Allows to call a method and immediatly get it's options. + Set the expected number for the call to Any() + + + + + Creates a new instance. + + Proxy. + Mocked instance. + + + + Get the method options for the call + + The method call should go here, the return value is ignored + + + + This class is reponsible for taking a delegate and creating a wrapper + interface around it, so it can be mocked. + + + + + The scope for all the delegate interfaces create by this mock repositroy. + + + + + Gets a type with an "Invoke" method suitable for use as a target of the + specified delegate type. + + + + + + + + + Raise events for all subscribers for an event + + + + + Raise the event + + + + + The most common form for the event handler signature + + + + + Raise events for all subscribers for an event + + + + + Create an event raise for the specified event on this instance. + + + + + Creates a new instance of EventRaiser + + + + Raise the event + + + + + The most common signature for events + Here to allow intellisense to make better guesses about how + it should suggest parameters. + + + + + Allows to define what would happen when a method + is called. + + + + + Set the return value for the method. + + The object the method will return + IRepeat that defines how many times the method will return this value + + + + Throws the specified exception when the method is called. + + Exception to throw + + + + Ignores the arguments for this method. Any argument will be matched + againt this method. + + + + + Add constraints for the method's arguments. + + + + + Set a callback method for the last call + + + + + Set a delegate to be called when the expectation is matched. + The delegate return value will be returned from the expectation. + + + + + Call the original method on the class, bypassing the mocking layers. + + + + + + + Call the original method on the class, optionally bypassing the mocking layers. + + + + + + + Use the property as a simple property, getting/setting the values without + causing mock expectations. + + + + + Get an event raiser for the last subscribed event. + + + + + Set the parameter values for out and ref parameters. + This is done using zero based indexing, and _ignoring_ any non out/ref parameter. + + + + + Documentation message for the expectation + + Message + + + + Better syntax to define repeats. + + + + + Allows to specify the number of time for method calls + + + + + Repeat the method twice. + + + + + Repeat the method once. + + + + + Repeat the method at least once, then repeat as many time as it would like. + + + + + Repeat the method any number of times. + This has special affects in that this method would now ignore orderring. + + + + + Set the range to repeat an action. + + Min. + Max. + + + + Set the amount of times to repeat an action. + + + + + This method must not appear in the replay state. + This has special affects in that this method would now ignore orderring. + + + + + Allows to define what would happen when a method + is called. + + + + + Creates a new instance. + + the repository for this expectation + the recorder for this proxy + the proxy for this expectation + Expectation. + + + + Add constraints for the method's arguments. + + + + + Set a callback method for the last call + + + + + Set a delegate to be called when the expectation is matched. + The delegate return value will be returned from the expectation. + + + + + Set the return value for the method. + + The object the method will return + IRepeat that defines how many times the method will return this value + + + + Throws the specified exception when the method is called. + + Exception to throw + + + + Ignores the arguments for this method. Any argument will be matched + againt this method. + + + + + Call the original method on the class, bypassing the mocking layers. + + + + + + + Call the original method on the class, optionally bypassing the mocking layers + + + + + + + Use the property as a simple property, getting/setting the values without + causing mock expectations. + + + + + Gets the event raiser for the last event + + + + + Set the parameter values for out and ref parameters. + This is done using zero based indexing, and _ignoring_ any non out/ref parameter. + + + + + Repeat the method twice. + + + + + Repeat the method once. + + + + + Repeat the method at least once, then repeat as many time as it would like. + + + + + This method must not appear in the replay state. + + + + + Documentation message for the expectation + + Message + + + + Repeat the method any number of times. + + + + + Set the range to repeat an action. + + Min. + Max. + + + + Set the amount of times to repeat an action. + + + + + Better syntax to define repeats. + + + + + This class will provide hash code for hashtables without needing + to call the GetHashCode() on the object, which may very well be mocked. + This class has no state so it is a singelton to avoid creating a lot of objects + that does the exact same thing. See flyweight patterns. + + + + + Get the hash code for a proxy object without calling GetHashCode() + on the object. + + + + + Compares two instances of mocked objects + + + + + Compare two mocked objects + + + + + The next hash code value for a mock object. + This is safe for multi threading. + + + + + The sole instance of + + + + Interface to find the repository of a mocked object + + + + + Return true if it should call the original method on the object + instead of pass it to the message chain. + + The method to call + + + + Register a method to be called on the object directly + + + + + Register a property on the object that will behave as a simple property + + + + + Check if the method was registered as a property method. + + + + + Do get/set on the property, according to need. + + + + + Do add/remove on the event + + + + + Get the subscribers of a spesific event + + + + + Gets the declaring type of the method, taking into acccount the possible generic + parameters that it was created with. + + + + + Clears the state of the object, remove original calls, property behavior, subscribed events, etc. + + + + + The unique hash code of this mock, which is not related + to the value of the GetHashCode() call on the object. + + + + + Gets the repository. + + + + + Gets the implemented types by this mocked object + + The implemented. + + + + This is a dummy type that is used merely to give DynamicProxy the proxy instance that + it needs to create IProxy's types. + + + + + Create a new instance of + + + + Return true if it should call the original method on the object + instead of pass it to the message chain. + + The method to call + + + + Register a method to be called on the object directly + + + + + Register a property on the object that will behave as a simple property + + + + + Check if the method was registered as a property method. + + + + + Do get/set on the property, according to need. + + + + + Do add/remove on the event + + + + + Get the subscribers of a spesific event + + + + + Gets the declaring type of the method, taking into acccount the possible generic + parameters that it was created with. + + + + + Clears the state of the object, remove original calls, property behavior, subscribed events, etc. + + + + + The unique hash code of this proxy, which is not related + to the value of the GetHashCode() call on the object. + + + + + Gets the repository. + + + + + Gets the implemented types by this mocked object + + The implemented. + + + + Range for expected method calls + + + + + Creates a new instance. + + Min. + Max. + + + + Return the string representation of this range. + + + + + Gets or sets the min. + + + + + + + Gets or sets the max. + + + + + + + Records all the expectations for a mock and + return a ReplayDynamicMockState when Replay() + is called. + + + + + Creates a new instance. + + Repository. + The proxy that generates the method calls + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Records all the expectations for a mock and + return a ReplayPartialMockState when Replay() + is called. + + + + + Creates a new instance. + + Repository. + The proxy that generates the method calls + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Options for special repeat option + + + + + This method can be called only as many times as the IMethodOptions.Expect allows. + + + + + This method should never be called + + + + + This method can be call any number of times + + + + + This method will call the original method + + + + + This method will call the original method, bypassing the mocking layer + + + + + This method will simulate simple property behavior + + + + + Validate all expectations on a mock and ignores calls to + any method that was not setup properly. + + + + + Creates a new instance. + + The previous state for this method + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Gets a mock state that match the original mock state of the object. + + + + + Validate all expectations on a mock and ignores calls to + any method that was not setup properly. + + + + + Creates a new instance. + + The previous state for this method + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Gets a mock state that match the original mock state of the object. + + + + + Summary description for RhinoInterceptor. + + + + + Creates a new instance. + + + + + Intercept a method call and direct it to the repository. + + + + + Validate arguments for methods + + + + + Validate that the passed argument is not null. + + The object to validate + The name of the argument + + If the obj is null, an ArgumentNullException with the passed name + is thrown. + + + + + Validate that the arguments are equal. + + Expected args. + Actual Args. + + + + Validate that the two argument are equals, including validation for + when the arguments are collections, in which case it will validate their values. + + + + + This method is safe for use even if any of the objects is a mocked object + that override equals. + + + + + Throw an object already verified when accessed + + + + + Create a new instance of VerifiedMockState + + The previous mock state, used to get the initial record state + + + + Add a method call for this state' mock. + + The invocation for this method + The method that was called + The arguments this method was called with + + + + Verify that this mock expectations have passed. + + + + + Verify that we can move to replay state and move + to the reply state. + + + + + Gets a mock state that match the original mock state of the object. + + + + + Get the options for the last method call + + + + + Set the exception to throw when Verify is called. + This is used to report exception that may have happened but where caught in the code. + This way, they are reported anyway when Verify() is called. + + + + + Gets the matching verify state for this state + + + + + Get the options for the last method call + + + + + Records the actions on all the mocks created by a repository. + + + + + Records the specified call with the specified args on the mocked object. + + + + + Get the expectation for this method on this object with this arguments + + + + + This check the methods that were setup using the SetupResult.For() + or LastCall.Repeat.Any() and that bypass the whole expectation model. + + + + + Gets the all expectations for a mocked object and method combination, + regardless of the expected arguments / callbacks / contraints. + + Mocked object. + Method. + List of all relevant expectation + + + + Gets the all expectations for proxy. + + Mocked object. + List of all relevant expectation + + + + Removes all the repeatable expectations for proxy. + + Mocked object. + + + + Replaces the old expectation with the new expectation for the specified proxy/method pair. + This replace ALL expectations that equal to old expectations. + + Proxy. + Method. + Old expectation. + New expectation. + + + + Adds the recorder and turn it into the active recorder. + + Recorder. + + + + Moves to previous recorder. + + + + + Gets the recorded expectation or null. + + + + + Gets the next expected calls string. + + + + + Moves to parent recorder. + + + + + Set the expectation so it can repeat any number of times. + + + + + Removes the expectation from the recorder + + + + + Clear the replayer to call (and all its chain of replayers) + This also removes it from the list of expectations, so it will never be considered again + + + + + Get the expectation for this method on this object with this arguments + + + + + Gets a value indicating whether this instance has expectations that weren't satisfied yet. + + + true if this instance has expectations; otherwise, false. + + + + + Allows to set various options for the last method call on + a specified object. + If the method has a return value, it's recommended to use Expect + + + + + Allows to get an interface to work on the last call. + + The mocked object + Interface that allows to set options for the last method call on this object + + + + Set the return value for the method. + + The object the method will return + IRepeat that defines how many times the method will return this value + + + + Set the return value for the method. This overload is needed for LastCall.Return(null) + + The object the method will return + IRepeat that defines how many times the method will return this value + + + + Throws the specified exception when the method is called. + + Exception to throw + + + + Ignores the arguments for this method. Any argument will be matched + againt this method. + + + + + Add constraints for the method's arguments. + + + + + Set a callback method for the last call + + + + + Call the original method on the class, bypassing the mocking layers, for the last call. + + + + + Call the original method on the class, optionally bypassing the mocking layers, for the last call. + + + + + Set a delegate to be called when the expectation is matched. + The delegate return value will be returned from the expectation. + + + + + Gets an interface that will raise the last event when called. + + + + + Set the parameter values for out and ref parameters. + This is done using zero based indexing, and _ignoring_ any non out/ref parameter. + + + + + Documentation message for the expectation + + Message + + + + Use the property as a simple property, getting/setting the values without + causing mock expectations. + + + + + Better syntax to define repeats. + + + + + Base class for method recorders, handle delegating to inner recorder if needed. + + + + + List of the expected actions on for this recorder + The legal values are: + * Expectations + * Method Recorders + + + + + The current recorder. + + + + + The current replayer; + + + + + The parent recorder of this one, may be null. + + + + + This contains a list of all the replayers that should be ignored + for a spesific method call. A replayer gets into this list by calling + ClearReplayerToCall() on its parent. This list is Clear()ed on each new invocation. + + + + + All the repeatable methods calls. + + + + + Counts the recursion depth of the current expectation search stack + + + + + Creates a new instance. + + + + + Creates a new instance. + + Parent recorder. + Repeatable methods + + + + Records the specified call with the specified args on the mocked object. + + + + + Get the expectation for this method on this object with this arguments + + + + + Gets the all expectations for a mocked object and method combination, + regardless of the expected arguments / callbacks / contraints. + + Mocked object. + Method. + List of all relevant expectation + + + + Gets the all expectations for proxy. + + Mocked object. + List of all relevant expectation + + + + Replaces the old expectation with the new expectation for the specified proxy/method pair. + This replace ALL expectations that equal to old expectations. + + Proxy. + Method. + Old expectation. + New expectation. + + + + Remove the all repeatable expectations for proxy. + + Mocked object. + + + + Set the expectation so it can repeat any number of times. + + + + + Removes the expectation from the recorder + + + + + Adds the recorder and turn it into the active recorder. + + Recorder. + + + + Moves to previous recorder. + + + + + Moves to parent recorder. + + + + + Gets the recorded expectation or null. + + + + + Clear the replayer to call (and all its chain of replayers). + This also removes it from the list of expectations, so it will never be considered again + + + + + Get the expectation for this method on this object with this arguments + + + + + Gets the next expected calls string. + + + + + Handles the real getting of the recorded expectation or null. + + + + + Handle the real execution of this method for the derived class + + + + + Handle the real execution of this method for the derived class + + + + + Handle the real execution of this method for the derived class + + + + + Handle the real execution of this method for the derived class + + + + + Handle the real execution of this method for the derived class + + + + + Handle the real execution of this method for the derived class + + + + + Should this replayer be considered valid for this call? + + + + + This check the methods that were setup using the SetupResult.For() + or LastCall.Repeat.Any() and that bypass the whole expectation model. + + + + + Gets a value indicating whether this instance has expectations that weren't satisfied yet. + + + true if this instance has expectations; otherwise, false. + + + + + Handle the real execution of this method for the derived class + + + + + Unordered collection of method records, any expectation that exist + will be matched. + + + + + The parent recorder we have redirected to. + Useful for certain edge cases in orderring. + See: FieldProblem_Entropy for the details. + + + + + Creates a new instance. + + Parent recorder. + Repeatable methods + + + + Creates a new instance. + + + + + Records the specified call with the specified args on the mocked object. + + Mocked object. + Method. + Expectation. + + + + Get the expectation for this method on this object with this arguments + + Invocation for this method + Mocked object. + Method. + Args. + True is the call was recorded, false otherwise + + + + Gets the all expectations for a mocked object and method combination, + regardless of the expected arguments / callbacks / contraints. + + Mocked object. + Method. + List of all relevant expectation + + + + Gets the all expectations for proxy. + + Mocked object. + List of all relevant expectation + + + + Replaces the old expectation with the new expectation for the specified proxy/method pair. + This replace ALL expectations that equal to old expectations. + + Proxy. + Method. + Old expectation. + New expectation. + + + + Handle the real execution of this method for the derived class + + + + + Handles the real getting of the recorded expectation or null. + + + + + Handle the real execution of this method for the derived class + + + + + Gets the next expected calls string. + + + + + Create an exception for an unexpected method call. + + + + + Gets a value indicating whether this instance has expectations that weren't satisfied yet. + + + true if this instance has expectations; otherwise, false. + + + + + Ordered collection of methods, methods must arrive in specified order + in order to pass. + + + + + Creates a new instance. + + Parent recorder. + Repetable methods + + + + Creates a new instance. + + + + + Handles the real getting of the recorded expectation or null. + + + + + Get the expectation for this method on this object with this arguments + + + + + Gets the next expected calls string. + + + + + Hold an expectation for a method call on an object + + + + + Creates a new instance. + + Proxy. + Method. + Expectation. + + + + Determains if the object equal to this instance + + Obj. + + + + + + Gets the hash code. + + + + + + + Gets the proxy. + + + + + + + Gets the method. + + + + + + + Gets the expectation. + + + + + + + Holds a pair of mocked object and a method + and allows to compare them against each other. + This allows us to have a distinction between mockOne.MyMethod() and + mockTwo.MyMethod()... + + + + + Creates a new instance. + + Proxy. + Method. + + + + Determains whatever obj equals to this instance. + ProxyMethodPairs are equals when they point to the same /instance/ of + an object, and to the same method. + + Obj. + + + + + + Gets the hash code. + + + + + + + Gets the proxy. + + + + + + + Gets the method. + + + + + + + Change the recorder from ordered to unordered and vice versa + + + + + Creates a new instance. + + + + + Disposes this instance. + + + + + Accessor for the current mocker + + + + + The current mocker + + + + + Used for [assembly: InternalsVisibleTo(RhinoMocks.StrongName)] + Used for [assembly: InternalsVisibleTo(RhinoMocks.NormalName)] + + + + + Strong name for the Dynamic Proxy assemblies. Used for InternalsVisibleTo specification. + + + + + Normal name for dynamic proxy assemblies. Used for InternalsVisibleTo specification. + + + + + Logs all method calls for methods + + + + + Setup method calls to repeat any number of times. + + + + + Get the method options and set the last method call to repeat + any number of times. + This also means that the method would transcend ordering + + + + + Get the method options for the last method call on the mockInstance and set it + to repeat any number of times. + This also means that the method would transcend ordering + + + + + Utility class for working with method calls. + + + + + Delegate to format the argument for the string representation of + the method call. + + + + + Return the string representation of a method call and its arguments. + + The method + The method arguments + Invocation of the method, used to get the generics arguments + Delegate to format the parameter + The string representation of this method call + + + + Return the string representation of a method call and its arguments. + + The invocation of the method, used to get the generic parameters + The method + The method arguments + The string representation of this method call + + + + Utility to get the default value for a type + + + + + The default value for a type. + Null for reference types and void + 0 for value types. + First element for enums + Note that we need to get the value even for opened generic types, such as those from + generic methods. + + Type. + The invocation. + the default value + + + + Allows easier access to MockRepository, works closely with Mocker.Current to + allow access to a context where the mock repository is automatially verified at + the end of the code block. + + + + + A method with no arguments and no return value that will be called under the mock context. + + + + + Interface to verify previously defined expectations + + + + + Verifies if a piece of code + + + + + FluentMocker implements some kind of fluent interface attempt + for saying "With the Mocks [mocks], Expecting (in same order) [things] verify [that]." + + + + + Defines unordered expectations + + A delegate describing the expectations + an IMockVerifier + + + + Defines ordered expectations + + A delegate describing the expectations + an IMockVerifier + + + + Verifies previously defined expectations + + + + + Initialize a code block where Mocker.Current is initialized. + At the end of the code block, all the expectation will be verified. + This overload will create a new MockRepository. + + The code that will be executed under the mock context + + + + Initialize a code block where Mocker.Current is initialized. + At the end of the code block, all the expectation will be verified. + This overload will create a new MockRepository. + + The mock repository to use, at the end of the code block, VerifyAll() will be called on the repository. + The code that will be executed under the mock context + + + + Create a FluentMocker + + The mock repository to use. + + + + Wraps a reference that is passed + ByRef and provides indirect load/store support. + + + + + Summary description for NewArrayExpression. + + + + + + + + + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + + + + + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + + + + + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + + + + + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + + + + + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + + + + + Inspect the base method for generic definitions + and set the return type and the parameters + accordingly + + + + + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + + + + + + + + + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + + + + + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + + + + + + + + + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + + + + + + + + + Summary description for PropertiesCollection. + + + + + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + + + + + Base class that exposes the common functionalities + to proxy generation. + + + TODO: + - Use the interceptor selector if provided + - Add tests and fixes for 'leaking this' problem + - Mixin support + + + + + Used by dinamically implement + + + + + + Generates a parameters constructor that initializes the proxy + state with just to make it non-null. + + This constructor is important to allow proxies to be XML serializable + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + + + + + + + + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + + + + + + + If true the invocation will implement the IChangeProxyTarget interface + + + + + + Generates the constructor for the nested class that extends + + + + + + + + + + + + + Improvement: this cache should be static. We should generate a + type constructor instead + + + + + Performs some basic screening and invokes the + to select methods. + + + + + + + + + + + Checks if the method is public or protected. + + + + + + + + + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + + + + + Checks if the method has the same signature as a method that was marked as + one that should generate a new vtable slot. + + + + + Initializes a new instance of the class. + + Type of the target. + The interfaces. + The options. + + + + + + + + Initializes a new instance of the class. + + The emitter. + The add method. + The remove method. + The attributes. + + + + + + + + Finds the type of the method on target. + + The method on interface. + Type of the proxy target. + + + + + + Checks whether the given types are the same. This is + more complicated than it looks. + + + + + + + + + + + This is used by the ProxyObjectReference class durin de-serialiation, to know + which generator it should use + + + + + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + + + + + Handles the deserialization of proxies. + + + + + Usefull for test cases + + + + + Used during the target type inspection process. + Implementors have a chance to interfere in the + proxy generation process + + + + + Invoked by the generation process to know if + the specified member should be proxied + + + + + + + + + + + Invoked by the generation process to notify that a + member wasn't marked as virtual. + + + + + + + + + Invoked by the generation process to notify + that the whole process is completed. + + + + + Abstracts the implementation of proxy constructions + + + + + Implementors should return a proxy for the specified type. + + The proxy base class. + The proxy generation options. + The generated proxy type. + + + + Implementors should return a proxy for the specified + type and interfaces. The interfaces must be only "mark" interfaces + + + + + + + + + + + + + Implementors should return a proxy for the specified + interface that 'proceeds' executions to the + specified target. + + + + + + + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s). + + + + + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s) and uses an instance of the interface + as their targets, rather than a class. All IInvocation's + should then implement IChangeProxyTarget. + + + + + + + + + + + Gets the module scope used by this builder for generating code. + + The module scope used by this builder. + + + + Determines whether this assembly has internals visisble to dynamic proxy. + + The asm. + + + + Determines whether the specified method is internal. + + The method. + + true if the specified method is internal; otherwise, false. + + + + + Summary description for ModuleScope. + + + + + The default file name used when the assembly is saved using . + + + + + The default assembly (simple) name used for the assemblies generated by a instance. + + + + + Initializes a new instance of the class; assemblies created by this instance will not be saved. + + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved. + + If set to true saves the generated module. + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + + If set to true saves the generated module. + The simple name of the strong-named assembly generated by this . + The path and file name of the manifest module of the strong-named assembly generated by this . + The simple name of the weak-named assembly generated by this . + The path and file name of the manifest module of the weak-named assembly generated by this . + + + + Returns a type from this scope's type cache, or null if the key cannot be found. + + The key to be looked up in the cache. + The type from this scope's type cache matching the key, or null if the key cannot be found + + + + Registers a type in this scope's type cache. + + The key to be associated with the type. + The type to be stored in the cache. + + + + Gets the key pair used to sign the strong-named assembly generated by this . + + + + + + + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + + If set to true, a strong-named module is returned; otherwise, a weak-named module is returned. + A strong-named or weak-named module generated by this scope, as specified by the parameter. + + + + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + + A strong-named module generated by this scope. + + + + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + + A weak-named module generated by this scope. + + + + Saves the generated assembly with the name and directory information given when this instance was created (or with + the and current directory if none was given). + + + + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the overload. + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + + Both a strong-named and a weak-named assembly have been generated or no assembly has been + generated. + + + + Saves the specified generated assembly with the name and directory information given when this instance was created + (or with the and current directory if none was given). + + True if the generated assembly with a strong name should be saved (see ); + false if the generated assembly without a strong name should be saved (see . + + + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + + No assembly has been generated that matches the parameter. + + + + + Users of this should use this lock when accessing the cache. + + + + + Gets the strong-named module generated by this scope, or if none has yet been generated. + + The strong-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the strongly named module generated by this scope. + + The file name of the strongly named module generated by this scope. + + + + Gets the directory where the strongly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the strongly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + Gets the weak-named module generated by this scope, or if none has yet been generated. + + The weak-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the weakly named module generated by this scope. + + The file name of the weakly named module generated by this scope. + + + + Gets the directory where the weakly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the weakly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + ProxyBuilder that persists the generated type. + + + The saved assembly contains just the last generated type. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The hook. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The builder. + + + + Initializes a new instance of the class. + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The interceptors. + + + + + + Creates the class proxy. + + Type of the target. + The interceptors. + The constructor args. + + + + + + + + + + + + + + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The options. + The constructor args. + The interceptors. + + + + + + Gets the proxy builder instance. + + The proxy builder. + + + + + + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + + Base for Attributes that want to express lifestyle + chosen by the component. + + + + + Initializes a new instance of the class. + + The type. + + + + Gets or sets the lifestyle. + + The lifestyle. + + + + This attribute is usefull only when you want to register all components + on an assembly as a batch process. + By doing so, the batch register will look + for this attribute to distinguish components from other classes. + + + + + Initializes a new instance of the class. + + The key. + + + + Initializes a new instance of the class. + + The key. + The service. + + + + Initializes a new instance of the class. + + The key. + The service. + The lifestyle. + + + + Gets the service. + + The service. + + + + Gets the key. + + The key. + + + + Associates a custom component with a component + + + + + Initializes a new instance of the class. + + Type of the component activator. + + + + Gets the type of the component activator. + + The type of the component activator. + + + + Specifies the proxying behavior for a component. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether the generated + interface proxy should inherit from . + + + + + Determines if the component requires a single interface proxy. + + + true if the component requires a single interface proxy. + + + + Gets or sets the additional interfaces used during proxy generation. + + + + + Marks as property to be skipped and not be wired + by the IoC container + + + + + Used to declare that a component wants interceptors acting on it. + + + + + Constructs the InterceptorAttribute pointing to + a key to a interceptor + + + + + + + Constructs the InterceptorAttribute pointing to + a service + + + + + + + Indicates that the target components wants a + singleton lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + transient lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per thread lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per web request lifestyle. + + + + + Indicates that the target components wants a + pooled lifestyle. + + + + + Initializes a new instance of the class + using the default initial pool size (5) and the max pool size (15). + + + + + Initializes a new instance of the class. + + Initial size of the pool. + Max pool size. + + + + Gets the initial size of the pool. + + The initial size of the pool. + + + + Gets the maximum pool size. + + The size of the max pool. + + + + Indicates that the target components wants a + custom lifestyle. + + + + + Initializes a new instance of the class. + + The lifestyle handler. + + + + Gets the type of the lifestyle handler. + + The type of the lifestyle handler. + + + + New interface that is going to be used by DynamicProxy 2 + + + + + New interface that is going to be used by DynamicProxy 2 + + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + + + + + + + The generic arguments of the method, or null if not a generic method. + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + + Interceptors might implement this to receive the + ComponentModel on behalf of the component where the + interceptor is acting. + + + + + Get the proxy target (note that null is a valid target!) + + + + + + + Gets the interceptors for the proxy + + + + + + + Abstract representation of a vertex. + + + + + The nodes that dependes on this node + + + + + The nodes that this node depends + + + + + The node has not been visited yet + + + + + This node is in the process of being visited + + + + + This now was visited + + + + + Represents a collection of objects + which are guaranted to be unique + and holds a color for them + + + + + Holds a timestamp (integer) + for a given item + + + + + Returns the node at the specified index. + + The lookup index. + The node at the specified index. + + If the specified is greater than the + number of objects within the list. + + + + + Validates the specified index. + + The lookup index. + + If the index is invalid. + + + + + Lifecycle interface. If implemented by a component, + the method Initialized will be invoked by the container + before making the component available to the external world. + + + + + Implementors should perform any initialization logic. + + + + + Only called for components that + belongs to a pool when the component + comes back to the pool. + + + + + Implementors should perform any + initialization/clean up. + + + + + Interface for components that wish to be started by the container + + + + + Starts this instance. + + + + + Stops this instance. + + + + + Manages the instantiation of s. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Provides a factory that can produce either or + classes. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + + Summary description for ConsoleFactory. + + + + + NullLogFactory used when logging is turned off. + + + + + Creates an instance of ILogger with the specified name. + + Name. + + + + + + Creates an instance of ILogger with the specified name and LoggerLevel. + + Name. + Level. + + + + + + Creates outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + + + + + Manages logging. + + + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + + The Subname of this logger. + The New ILogger instance. + If the name has an empty element name. + + + + Determines if messages of priority "debug" will be logged. + + True if "debug" messages will be logged. + + + + Determines if messages of priority "info" will be logged. + + True if "info" messages will be logged. + + + + Determines if messages of priority "warn" will be logged. + + True if "warn" messages will be logged. + + + + Determines if messages of priority "error" will be logged. + + True if "error" messages will be logged. + + + + Determines if messages of priority "fatal" will be logged. + + True if "fatal" messages will be logged. + + + + Determines if messages of priority "fatalError" will be logged. + + True if "fatalError" messages will be logged. + + + + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + + + + + Creates a new LevelFilteredLogger. + + + + + Keep the instance alive in a remoting scenario + + + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Message format + Array of objects to write using format + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Message format + Array of objects to write using format + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Message format + Array of objects to write using format + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Message format + Array of objects to write using format + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Message format + Array of objects to write using format + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Implementors output the log content by implementing this method only. + Note that exception can be null + + + + + + + + + + + + + The LoggerLevel that this logger + will be using. Defaults to LoggerLevel.Off + + + + The name that this logger will be using. + Defaults to String.Empty + + + + Determines if messages of priority "debug" will be logged. + + + true if log level flags include the bit + + + + Determines if messages of priority "info" will be logged. + + + true if log level flags include the bit + + + + Determines if messages of priority "warn" will be logged. + + + true if log level flags include the bit + + + + Determines if messages of priority "error" will be logged. + + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + + true if log level flags include the bit + + + + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug and the Name + set to String.Empty. + + + + + Creates a new ConsoleLogger with the Name + set to String.Empty. + + The logs Level. + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug. + + The logs Name. + + + + Creates a new ConsoleLogger. + + The logs Name. + The logs Level. + + + + A Common method to log. + + The level of logging + The name of the logger + The Message + The Exception + + + + Returns a new ConsoleLogger with the name + added after this loggers name, with a dot in between. + + The added hierarchical name. + A new ConsoleLogger. + + + + The Logger using standart Diagnostics namespace. + + + + + Creates a logger based on . + + + + + + + + Creates a logger based on . + + + + + + + + + + + Creates a logger based on . + + + + + + + + + + + + + + Provides an interface that supports and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + + + + + Exposes the Global Context of the extended logger. + + + + + Exposes the Thread Context of the extended logger. + + + + + Exposes the Thread Stack of the extended logger. + + + + + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + + + + + Creates a new NullLogger. + + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + Returns this NullLogger. + + Ignored + This ILogger instance. + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + Returns empty context properties. + + + + + Returns empty context properties. + + + + + Returns empty context stacks. + + + + + Interface for Context Properties implementations + + + + This interface defines a basic property get set accessor. + + + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a MemoryStream for testing your components. + + + This logger is not thread safe. + + + + + Creates a new StreamLogger with default encoding + and buffer size. Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + + + Creates a new StreamLogger with default buffer size. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + + + Creates a new StreamLogger. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + The buffer size that will be used for this stream. + + + + + Creates a new StreamLogger with + Debug as default Level. + + The name of the log. + The StreamWriter the log will write to. + + + + The WebLogger sends everything to the HttpContext.Trace + + + Trace must be enabled on the Asp.Net configuration file (web.config or machine.config) + + + + + Creates a new WebLogger with the priority set to DEBUG. + + + + + Creates a new WebLogger. + + The Log level typecode. + + + + Creates a new WebLogger. + + The Log name. + + + + Creates a new WebLogger. + + The Log name. + The Log level typecode. + + + + A Common method to log. + + The level of logging + The Log name. + The Message + The Exception + + + + Just returns this logger (WebLogger is not hierarchical). + + Ignored + This ILogger instance. + + + + Supporting Logger levels. + + + + + Logging will be off + + + + + Fatal logging level + + + + + Error logging level + + + + + Warn logging level + + + + + Info logging level + + + + + Debug logging level + + + + + Summary description for IConfiguration. + + + is a interface encapsulating a configuration node + used to retrieve configuration values. + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the node. + + + The Name of the node. + + + + + Gets the value of the node. + + + The Value of the node. + + + + + Gets an of + elements containing all node children. + + The Collection of child nodes. + + + + Gets an of the configuration attributes. + + + + + This is an abstract implementation + that deals with methods that can be abstracted away + from underlying implementations. + + + + AbstractConfiguration makes easier to implementers + to create a new version of + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the . + + + The Name of the . + + + + + Gets the value of . + + + The Value of the . + + + + + Gets all child nodes. + + The of child nodes. + + + + Gets node attributes. + + + All attributes of the node. + + + + + A collection of objects. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Adds an . + + The to add. + + The index at which the new element was inserted. + + + + + Adds an array of . + + The Array of to add. + + + + Adds a . + + The to add. + + + + Copies the elements to a one-dimensional instance at the specified index. + + + The one-dimensional must have zero-based indexing. + + The zero-based index in array at which copying begins. + + + + Gets a value indicating whether the contains + in the collection. + + The to locate. + + if the is contained in the collection; + otherwise, . + + + + + Removes a specific from the + collection. + + The to remove from the collection. + + is not found in the collection. + + + + + Represents the entry at the specified index of the . + + + The zero-based index of the entry to locate in the collection. + + + The entry at the specified index of the collection. + + + is outside the valid range of indexes for the collection. + + + + + Summary description for MutableConfiguration. + + + + + Initializes a new instance of the class. + + The name. + + + + Enumeration used to mark the component's lifestyle. + + + + + No lifestyle specified. + + + + + Singleton components are instantiated once, and shared + between all clients. + + + + + Thread components have a unique instance per thread. + + + + + Transient components are created on demand. + + + + + Optimization of transient components that keeps + instance in a pool instead of always creating them. + + + + + Any other logic to create/release components. + + + + + PerWebRequest components are created once per Http Request + + + + + + + + + Represents the collection of information and + meta information collected about a component. + + + + Name (key) of the component + + + Service exposed + + + Implementation for the service + + + Extended properties + + + Lifestyle for the component + + + Custom lifestyle, if any + + + Custom activator, if any + + + Dependencies the kernel must resolve + + + All available constructors + + + All potential properties that can be setted by the kernel + + + Steps of lifecycle + + + External parameters + + + Configuration node associated + + + Interceptors associated + + + + Constructs a ComponentModel + + + + + Sets or returns the component key + + + + + Gets or sets the service exposed. + + The service. + + + + Gets or sets the component implementation. + + The implementation. + + + + Gets or sets a value indicating whether the component requires generic arguments. + + + true if generic arguments are required; otherwise, false. + + + + + Gets or sets the extended properties. + + The extended properties. + + + + Gets the constructors candidates. + + The constructors. + + + + Gets the properties set. + + The properties. + + + + Gets or sets the configuration. + + The configuration. + + + + Gets the lifecycle steps. + + The lifecycle steps. + + + + Gets or sets the lifestyle type. + + The type of the lifestyle. + + + + Gets or sets the strategy for + inspecting public properties + on the components + + + + + Gets or sets the custom lifestyle. + + The custom lifestyle. + + + + Gets or sets the custom component activator. + + The custom component activator. + + + + Gets the interceptors. + + The interceptors. + + + + Gets the parameter collection. + + The parameters. + + + + Dependencies are kept within constructors and + properties. Others dependencies must be + registered here, so the kernel (as a matter + of fact the handler) can check them + + + + + Represents a constructor of the component + that the container can use to initialize it properly. + + + + + Initializes a new instance of the class. + + The constructor info. + The dependencies. + + + + Gets the ConstructorInfo (from reflection). + + The constructor. + + + + Gets the dependencies this constructor candidate exposes. + + The dependencies. + + + + Collection of + + + + Adds the specified candidate. + + The candidate. + + + + Clears this instance. + + + + + Gets the fewer arguments candidate. + + The fewer arguments candidate. + + + + Represents a dependency (other component or a + fixed value available through external configuration). + + + + + Initializes a new instance of the class. + + The type. + The dependency key. + Type of the target. + if set to true [is optional]. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Serves as a hash function for a particular type, suitable + for use in hashing algorithms and data structures like a hash table. + + + A hash code for the current . + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + if the specified is equal to the + current ; otherwise, . + + + + + Gets or sets the type of the dependency. + + The type of the dependency. + + + + Gets or sets the dependency key. + + The dependency key. + + + + Gets the type of the target. + + The type of the target. + + + + Gets or sets whether this dependency is optional. + + + true if this dependency is optional; otherwise, false. + + + + + Collection of . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The dependencies. + + + + Initializes a new instance of the class. + + The dependencies. + + + + Adds the specified model. + + The model. + + + + Removes the specified model. + + The model. + + + + Clears this instance. + + + + + Determines whether this collection contains the the specified model. + + The model. + + true if the collection contains the specified model; otherwise, false. + + + + + Represents an reference to a Interceptor component. + + + + + Initializes a new instance of the class. + + The component key. + + + + Initializes a new instance of the class. + + Type of the service. + + + + Gets the type of the service. + + The type of the service. + + + + Gets the interceptor component key. + + The component key. + + + + Gets the type of the reference. + + The type of the reference. + + + + Collection of + + + + Adds the specified interceptor. + + The interceptor. + + + + Adds the the specified interceptor as the first. + + The interceptor. + + + + Adds the the specified interceptor as the last. + + The interceptor. + + + + Inserts the specified interceptor at the specified index. + + The index. + The interceptor. + + + + When implemented by a class, copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets a value indicating whether this instance has interceptors. + + + true if this instance has interceptors; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + + Represents a collection of ordered lifecycle steps. + + + + + Initializes a new instance of the class. + + + + + Returns all steps for the commission phase + + + + + + + Returns all steps for the decommission phase + + + + + + + Adds a step to the commission or decomission phases. + + + + + + + + + Copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets a value indicating whether this instance has commission steps. + + + true if this instance has commission steps; otherwise, false. + + + + + Gets a value indicating whether this instance has decommission steps. + + + true if this instance has decommission steps; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + + Represents meta information associated with a method + (not yet defined) + + + + + Initializes a new instance of the class. + + The config node. + + + + Gets the config node. + + The config node. + + + + Collection of + + + + Adds the specified model. + + The model. + + + + Gets the method info2 model. + + The method info2 model. + + + + Represents a parameter. Usually the parameter + comes from the external world, ie, an external configuration. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Gets the name. + + The name. + + + + Gets the value. + + The value. + + + + Gets the config value. + + The config value. + + + + Collection of + + + + Initializes a new instance of the class. + + + + + Adds the specified name. + + The name. + The value. + + + + Adds the specified name. + + The name. + The config node. + + + + Determines whether this collection contains the specified key. + + The key. + + true if yes; otherwise, false. + + + + + Adds the specified key. + + + Not implemented + + The key. + The value. + + + + Clears this instance. + + + Not implemented + + + + + Removes the specified key. + + The key. + + Not implemented + + + + + Copy the content to the specified array + + target array + target index + + Not implemented + + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets the keys. + + The keys. + + Not implemented + + + + + Gets the values. + + The values. + + Not implemented + + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets a value indicating whether this instance is fixed size. + + + true if this instance is fixed size; otherwise, false. + + + + + Gets the with the specified key. + + + + + + + Gets the count. + + The count. + + + + Gets the sync root. + + The sync root. + + + + Gets a value indicating whether this instance is synchronized. + + + true if this instance is synchronized; otherwise, false. + + + + + Represents a property and the respective dependency. + + + + + Initializes a new instance of the class. + + The property info. + The dependency. + + + + Gets the property. + + The property. + + + + Gets the dependency. + + The dependency. + + + + Collection of + + + + Adds the specified property. + + The property. + + + + Clears this instance. + + + + + Finds a PropertySet the by PropertyInfo. + + The info. + + + + + + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + + + + Returns an instance of + created according to the relativePath + using itself as the root. + + + + + + + + + + + Only valid for resources that + can be obtained through relative paths + + + + + + + + + Do not allow closing and disposal of the + underlying . + + + + + Depicts the contract for resource factories. + + + + + Used to check whether the resource factory + is able to deal with the given resource + identifier. + + + Implementors should return true + only if the given identificator is supported + by the resource factory + + + + + + + + + Creates an instance + for the given resource identifier + + + + + + + + + Creates an instance + for the given resource identifier + + + + + + + + + + + + + + + + + + + + + + + Adapts a static string content as an + + + + Enable access to files on network shares + + + + + Defines that the implementation wants a + in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + + + Used by Castle Project components to, for example, + gather logging factories + + + + + Increments IServiceProvider with a generic service resolution operation. + + + + + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + + + + + General purpose class to represent a standard pair of values. + + Type of the first value + Type of the second value + + + + Constructs a pair with its values + + + + + + + + \ No newline at end of file diff --git a/slips/dox/Assignment Database/InlandMarina.mdf b/slips/dox/Assignment Database/InlandMarina.mdf new file mode 100644 index 0000000..545e974 Binary files /dev/null and b/slips/dox/Assignment Database/InlandMarina.mdf differ diff --git a/slips/dox/Assignment Database/InlandMarina_log.LDF b/slips/dox/Assignment Database/InlandMarina_log.LDF new file mode 100644 index 0000000..c4bacf5 Binary files /dev/null and b/slips/dox/Assignment Database/InlandMarina_log.LDF differ diff --git a/slips/dox/Inland Marina Background.doc b/slips/dox/Inland Marina Background.doc new file mode 100644 index 0000000..047d1e7 Binary files /dev/null and b/slips/dox/Inland Marina Background.doc differ diff --git a/slips/dox/InlandMarinaScript.sql b/slips/dox/InlandMarinaScript.sql new file mode 100644 index 0000000..3a58e01 Binary files /dev/null and b/slips/dox/InlandMarinaScript.sql differ diff --git a/slips/dox/Marina Assignment.doc b/slips/dox/Marina Assignment.doc new file mode 100644 index 0000000..e7ee22c Binary files /dev/null and b/slips/dox/Marina Assignment.doc differ diff --git a/slips/dox/MarinaDatabaseDiagram.doc b/slips/dox/MarinaDatabaseDiagram.doc new file mode 100644 index 0000000..098a315 Binary files /dev/null and b/slips/dox/MarinaDatabaseDiagram.doc differ diff --git a/slips/dox/inlandbanner_v3_800x100.jpg b/slips/dox/inlandbanner_v3_800x100.jpg new file mode 100644 index 0000000..f1da8d1 Binary files /dev/null and b/slips/dox/inlandbanner_v3_800x100.jpg differ diff --git a/slips/dox/template/contact.html b/slips/dox/template/contact.html new file mode 100644 index 0000000..466f932 --- /dev/null +++ b/slips/dox/template/contact.html @@ -0,0 +1,108 @@ + + + + + template: contact + + + + + + + + + + + +
+ + +
+ +
+
+
+

latest news

+
+
+ +

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+

+

+

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+
+
+
+
+

additional links

+
+ +
+
+
+

other information

+
+
+ +

+ This space can be used for additional information such as a contact phone number, address + or maybe even a graphic. +

+
+
+
+
+

contact

+ +
+

Below is an example of how a contact form might look with this template:

+
+ your name + +
+
+ your email address + +
+
+ your enquiry + +
+
 
+
+ + +
+



NOTE: A contact form such as this would require some way of emailing the input to a specified email address.

+
+
+
+ +
+ + diff --git a/slips/dox/template/index.html b/slips/dox/template/index.html new file mode 100644 index 0000000..9a8dd39 --- /dev/null +++ b/slips/dox/template/index.html @@ -0,0 +1,151 @@ + + + + + template: home + + + + + + + + + + + +
+ + +
+ +
+
+
+

latest news

+
+
+ +

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+

+

+

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+
+
+
+
+

additional links

+
+ +
+
+
+

other information

+
+
+ +

+ This space can be used for additional information such as a contact phone number, address + or maybe even a graphic. +

+
+
+
+
+

introduction

+ +

+ This standards compliant website template is a themed version of the previously + released 'turn_it_up' design. It is released as an 'open source' design + (under the Creative Commons + Attribution 2.5 Licence), which means that you are free to download and use it + for anything you want (including modifying and amending it). The logo image + is from a digital photograph taken by me, so there are no issues with copyright + there. All I ask is that you leave the 'design by dcarter' link in the footer of + the template, but other than that... +

+

+ This template is written entirely in XHTML 1.1 and CSS, and can be validated + using the links in the footer. +

+

+ You can view my other 'open source' template designs + here. +

+

example elements

+

Here are some example elements available with this template.

+

Bold Text

+

this is an example of bold text

+

Italics

+

this is an example of italic text

+

Links

+

this is an example link

+

Block Quotes

+
+

+ Some blockquote text. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. +

+
+

Unordered Lists

+
    +
  • list item 1
  • +
  • list item 2
  • +
+
+

Ordered Lists

+
    +
  1. list item 1
  2. +
  3. list item 2
  4. +
+
+

Images

+

images can be placed on the left, in the center or on the right.

+ example graphic +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. +

+ example graphic + example graphic +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. +

+
+
+ +
+ + diff --git a/slips/dox/template/page1.html b/slips/dox/template/page1.html new file mode 100644 index 0000000..562d6c1 --- /dev/null +++ b/slips/dox/template/page1.html @@ -0,0 +1,122 @@ + + + + + template: page 1 + + + + + + + + + + + +
+ + +
+ +
+
+
+

latest news

+
+
+ +

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+

+

+

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+
+
+
+
+

additional links

+
+ +
+
+
+

other information

+
+
+ +

+ This space can be used for additional information such as a contact phone number, address + or maybe even a graphic. +

+
+
+
+
+

page 1

+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+
+
+ +
+ + diff --git a/slips/dox/template/page2.html b/slips/dox/template/page2.html new file mode 100644 index 0000000..e398a5a --- /dev/null +++ b/slips/dox/template/page2.html @@ -0,0 +1,122 @@ + + + + + template: page 2 + + + + + + + + + + + +
+ + +
+ +
+
+
+

latest news

+
+
+ +

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+

+

+

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+
+
+
+
+

additional links

+
+ +
+
+
+

other information

+
+
+ +

+ This space can be used for additional information such as a contact phone number, address + or maybe even a graphic. +

+
+
+
+
+

page 2

+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+
+
+ +
+ + diff --git a/slips/dox/template/page3.html b/slips/dox/template/page3.html new file mode 100644 index 0000000..2c09c22 --- /dev/null +++ b/slips/dox/template/page3.html @@ -0,0 +1,122 @@ + + + + + template: page 3 + + + + + + + + + + + +
+ + +
+ +
+
+
+

latest news

+
+
+ +

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+

+

+

01.09.2006

+

This is where you can put your latest news.

+

read more ...

+
+
+
+
+

additional links

+
+ +
+
+
+

other information

+
+
+ +

+ This space can be used for additional information such as a contact phone number, address + or maybe even a graphic. +

+
+
+
+
+

page 3

+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute + irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui. +

+
+
+ +
+ + diff --git a/slips/dox/template/style/back.png b/slips/dox/template/style/back.png new file mode 100644 index 0000000..60faea0 Binary files /dev/null and b/slips/dox/template/style/back.png differ diff --git a/slips/dox/template/style/colour.css b/slips/dox/template/style/colour.css new file mode 100644 index 0000000..ff08280 --- /dev/null +++ b/slips/dox/template/style/colour.css @@ -0,0 +1,85 @@ +html{height: 100%;} + +body +{ background: #837560; + color: #70695A; +} + +blockquote +{ background: #FFFFFF; + color: #70695A; + border-color: #767676; +} + +#main +{ background: #FFFFFF url(back.png) repeat-y; + color: #70695A; +} + +#links, #footer, #menu, #menu li a +{ background: #FFFFFF url(menu.png); + color: #DBD7D1; + border-color: #D7D7D7; +} + +#links a, #footer a, #links a:hover, #footer a:hover +{ background: transparent; + color: #DBD7D1; +} + +#logo +{ background: #FFFFFF url(logo.jpg) no-repeat; + color: #70695A; +} + +#logo h1 +{ background: transparent; + color: #FFFFFF; +} + +h1, #column2 h1 +{ background: transparent; + color: #CE7014; + border-color: #CAAE90; +} + +#menu li a:hover, #menu li a#selected, #menu li a#selected:hover +{ background: #FFFFFF url(menu_hover.png); + color: #70695A; +} + +#content, #column2 a, #column2 a:hover +{ background: transparent; + color: #70695A; +} + +.sidebaritem, .sidebaritem a, .sidebaritem a:hover +{ background: transparent; + color: #DBD7D1; +} + +.sbihead +{ background: #FFFFFF url(sbi_header.png); + color: #70695A; +} + +.sbihead h1 +{ background: transparent; + color: #70695A; +} + +.sbilinks li a +{ background: #FFFFFF url(link.png); + color: #DBD7D1; +} + +.sbilinks li a:hover +{ background: #B7B7B7; + color: #CE7014; +} + +input, textarea +{ background: #FFFFFF; + color: #70695A; + border-color: #CAAE90; +} diff --git a/slips/dox/template/style/graphic.jpg b/slips/dox/template/style/graphic.jpg new file mode 100644 index 0000000..9d77757 Binary files /dev/null and b/slips/dox/template/style/graphic.jpg differ diff --git a/slips/dox/template/style/link.png b/slips/dox/template/style/link.png new file mode 100644 index 0000000..7fb049c Binary files /dev/null and b/slips/dox/template/style/link.png differ diff --git a/slips/dox/template/style/logo.jpg b/slips/dox/template/style/logo.jpg new file mode 100644 index 0000000..01c1bde Binary files /dev/null and b/slips/dox/template/style/logo.jpg differ diff --git a/slips/dox/template/style/menu.png b/slips/dox/template/style/menu.png new file mode 100644 index 0000000..8efcaad Binary files /dev/null and b/slips/dox/template/style/menu.png differ diff --git a/slips/dox/template/style/menu_hover.png b/slips/dox/template/style/menu_hover.png new file mode 100644 index 0000000..556801d Binary files /dev/null and b/slips/dox/template/style/menu_hover.png differ diff --git a/slips/dox/template/style/sbi_header.png b/slips/dox/template/style/sbi_header.png new file mode 100644 index 0000000..2f59f1d Binary files /dev/null and b/slips/dox/template/style/sbi_header.png differ diff --git a/slips/dox/template/style/style.css b/slips/dox/template/style/style.css new file mode 100644 index 0000000..89a1c21 --- /dev/null +++ b/slips/dox/template/style/style.css @@ -0,0 +1,274 @@ +/* global */ +html{height: 100%;} + +body +{ font-family: verdana, arial, sans-serif; + padding: 0px; + margin: 0px; + font-size: .68em; +} + +p +{ margin: 0px; + padding: 0px 0px 16px 0px; + line-height: 1.7em; +} + +h1 +{ font-family: arial, sans-serif; + letter-spacing: .1em; +} + +h2 +{ margin: 0px; + padding: 0px 0px 4px 0px; + font-size: 100%; +} + +img{border: 0px;} + +a{outline: none;} + +/* image positioning - left, right and center */ +.left +{ float: left; + padding: 0px 8px 0px 0px; +} + +.right +{ float: right; + padding: 0px 0px 0px 8px; +} + +.center +{ display: block; + text-align: center; + margin: 0 auto; +} + +/* block quote */ +blockquote +{ margin: 20px 0px 20px 0px; + padding: 10px 20px 0px 20px; + border-left: 8px solid; +} + +/* unordered list */ +ul +{ margin: 8px 0px 0px 16px; + padding: 0px; +} + +ul li +{ list-style-type: square; + margin: 0px 0px 11px 0px; + padding: 0px; +} + +/* ordered list */ +ol +{ margin: 8px 0px 0px 24px; + padding: 0px; +} + +ol li +{ margin: 0px 0px 11px 0px; + padding: 0px; +} + +/* main container */ +#main +{ width: 780px; + margin-left: auto; + margin-right: auto; +} + +/* links above the logo / footer */ +#links, #footer +{ margin-left: auto; + margin-right: auto; + padding: 10px 21px 0px 19px; + width: 720px; + height: 26px; + font-size: 94%; + text-transform: uppercase; +} + +#links{text-align: right;} + +#footer{text-align: center;} + +#links a, #footer a{text-decoration: none;} + +#links a:hover, #footer a:hover{text-decoration: underline;} + +/* logo */ +#logo +{ margin-left: auto; + margin-right: auto; + width: 760px; + height: 100px; + text-align: left; +} + +#logo h1 +{ margin: 0px; + padding: 41px 0px 0px 19px; + font-size: 150%; + letter-spacing: .2em; +} + +/* navigation menu */ +#menu +{ height: 42px; + width: 760px; + margin-left: auto; + margin-right: auto; +} + +#menu ul{margin: 0px auto;} + +#menu li +{ float: left; + margin: 0px; + padding: 0px; +} + +#menu li a +{ display: block; + float: left; + height: 37px; + text-decoration: none; + padding: 3px 19px 2px 19px; + text-transform: uppercase; +} + +/* main content */ +#content +{ margin-left: auto; + margin-right: auto; + width: 760px; + height: auto; + padding: 0px; + overflow: hidden; +} + +/* column 1 - contains sidebar items */ +#column1 +{ width: 207px; + float: right; + padding: 16px 0px 15px 0px; +} + +.sidebaritem +{ text-align: left; + width: 188px; + float: left; + margin: 0px 0px 25px 0px; +} + +.sbihead +{ height: 14px; + width: 188px; + padding: 5px 0px 5px 19px; + text-transform: uppercase; +} + +.sbihead h1 +{ padding: 0px; + margin: 0px; + font-weight: bold; + font-size: 112%; +} + +.sbicontent{padding: 14px 8px 8px 19px;} + +.sbicontent p +{ line-height: 14px; + padding: 0px 0px 8px 0px; +} + +.sbilinks{padding: 0px;} + +.sbilinks ul{margin: 0px auto;} + +.sbilinks li +{ margin: 0px; + float: left; + list-style: none; +} + +.sbilinks li a , .sbilinks li a:hover +{ float: left; + height: 16px; + text-decoration: none; + padding: 5px 0px 4px 19px; + width: 188px; + border: 0px; +} + +/* column 2 - page content */ +#column2 +{ text-align: justify; + width: 512px; + float: left; + padding: 12px 3px 15px 19px; +} + +#column2 h1 +{ padding: 6px 0px 4px 0px; + margin: 0px 0px 12px 0px; + border-bottom: 1px solid; + font-size: 150%; + text-transform: uppercase; + font-weight: normal; +} + +.sidebaritem a, #column2 a, .sidebaritem a:hover, #column2 a:hover +{ padding: 0px 0px 2px 0px; + text-decoration: none; + border-bottom: 1px dashed; +} + +.sidebaritem a:hover, #column2 a:hover{border-bottom: 1px solid;} + +/* contact page - form layout */ +form{margin-top: 0px;} + +div.row +{ clear: both; + width: 448px; +} + +div.row span.formlabel +{ float: left; + width: 150px; + text-align: left; +} + +div.row span.forminput +{ float: right; + text-align: right; +} + +div.spacer +{ clear: both; + width: 80px; +} + +input, textarea +{ width: 259px; + font-family: verdana, arial, sans-serif; + border: 1px solid; + font-size: 100%; + margin: 2px; +} + +.submit +{ font-family: verdana, arial, sans-serif; + border: 1px solid; + width: 70px; + height: 22px; + cursor: pointer; + font-size: 100%; +} diff --git a/slips/readme.txt b/slips/readme.txt new file mode 100644 index 0000000..87e2209 --- /dev/null +++ b/slips/readme.txt @@ -0,0 +1,63 @@ +This project was built using NAnt 0.85 and C# 3.0 compiler. +In order to run this project you will need to follow the following steps to setup and continue development. + +1. Copy the root directory of this project to your file system. + E.g. G:\Cmpp299\Assignment1\trunk... + +2. In IIS create a virtual directory and name it whatever you want. E.g (Marina) +3. Point the virtual directory to + ...Assignment1\trunk\build\deploy\app + E.g> + G:\Cmpp299\Assignment1\trunk\build\deploy\app +4. Go to the build directory and copy the file called 'local.properties.template' to a file called 'local.properties.xml' +5. Open the file 'local.properties.xml' and change the values for the properties listed. +Eg. + + + + + + + + + + + + + + + +*Note: +- the virtual directory name is the name of the virtual directory created in step 2. +- the run.url is the startup url when running the application. +- the sqlcmd.connection string is used to build the database. +- the config.connectionstring is used to in the web.config +- initial.catalog is the name you would like to give to the database. + +6. open up a command prompt and navigate to the 'build' directory. +E.g. +G:\Cmpp299\Assignment1\trunk\build> + +7. type the following command "build load.data" + - this will build the database and load it with the default data. +E.g. +G:\Cmpp299\Assignment1\trunk\build>build load.data + +8. type the following command "build run" + - this will run the web application in your browser. +E.g. +G:\Cmpp299\Assignment1\trunk\build>build run + + +Additional notes: +Other commands you can try: +G:\Cmpp299\Assignment1\trunk\build>build test + - this will run all unit and integration tests for the project. + + +This project was built without the use of the Visual Studio debugger. I have attempted to include debug support +if you need to debug, however the behaviour may differ from running in visual studio then from that compiled and +deployed from the command line. + +If you have any questions you can find me at http://mokhan.ca or email me at mo at mo khan dot ca +Enjoy! \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/AvailableSlips.aspx b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx new file mode 100644 index 0000000..b89697f --- /dev/null +++ b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx @@ -0,0 +1,37 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AvailableSlips.aspx.cs" Inherits="Marina.Web.UI.AvailableSlips" Title="Untitled Page" %> +<%@ Import namespace="Marina.Web.Views"%> + +<%@ Import namespace="Marina.Presentation"%> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + +
+

Available Slips

+ + + + + + + + + + + <% foreach ( SlipDisplayDTO item in ViewLuggage.ClaimFor(ViewLuggageTickets.AvailableSlips) ) {%> + + + + + + + <% } %> + +
Location NameDock NameSlip WidthSlip Length
<%= item.LocationName %> + + <%= item.DockName %> + + <%= item.Width %><%= item.Length %>
+
+
diff --git a/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.cs b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.cs new file mode 100644 index 0000000..0166217 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Web.Views; + +namespace Marina.Web.UI { + public partial class AvailableSlips : Page, IAvailableSlipsView { + protected override void OnInit( EventArgs e ) { + base.OnInit( e ); + + new AvailableSlipsPresenter( this ).Initialize( ); + } + + public void Display( IEnumerable< SlipDisplayDTO > availableSlips ) { + ViewLuggage.TransporterFor( ViewLuggageTickets.AvailableSlips ).Add( availableSlips ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.designer.cs b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.designer.cs new file mode 100644 index 0000000..2710f03 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/AvailableSlips.aspx.designer.cs @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class AvailableSlips { + } +} diff --git a/slips/src/app/Marina.Web.UI/ContactUs.aspx b/slips/src/app/Marina.Web.UI/ContactUs.aspx new file mode 100644 index 0000000..84028f2 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ContactUs.aspx @@ -0,0 +1,23 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ContactUs.aspx.cs" Inherits="Marina.Web.UI.ContactUs" Title="Untitled Page" %> + + + + +

Contact Info

+

+ Inland Lake Marina
+ Box 123
+ Inland Lake, Arizona
+ 86038 +

+

+ (office ph) 928-450-2234
+ (leasing ph) 928-450-2235
+ (fax) 928-450-2236
+

+

+ Manager: Glenn Cooke
+ Slip Manager: Kimberley Carson
+ Contact Email: info@inlandmarina.com +

+
diff --git a/slips/src/app/Marina.Web.UI/ContactUs.aspx.cs b/slips/src/app/Marina.Web.UI/ContactUs.aspx.cs new file mode 100644 index 0000000..e59693c --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ContactUs.aspx.cs @@ -0,0 +1,8 @@ +using System; +using System.Web.UI; + +namespace Marina.Web.UI { + public partial class ContactUs : Page { + protected void Page_Load( object sender, EventArgs e ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/ContactUs.aspx.designer.cs b/slips/src/app/Marina.Web.UI/ContactUs.aspx.designer.cs new file mode 100644 index 0000000..77f29cc --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ContactUs.aspx.designer.cs @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class ContactUs { + } +} diff --git a/slips/src/app/Marina.Web.UI/CurrentLeases.aspx b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx new file mode 100644 index 0000000..0fb1bc5 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx @@ -0,0 +1,28 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CurrentLeases.aspx.cs" Inherits="Marina.Web.UI.CurrentLeases" Title="Untitled Page" %> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + +

Current Leases

+ + + + + + + + + + + + + + + + + +
Slip IDStart Date:Expiry Date:
<%# Transform.From( Container.DataItem).To( ).SlipID %><%# Transform.From( Container.DataItem).To( ).StartDate %><%# Transform.From( Container.DataItem).To( ).ExpiryDate %>
+ +
+
diff --git a/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.cs b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.cs new file mode 100644 index 0000000..47b2951 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class CurrentLeases : Page, ICurrentLeasesView { + protected void Page_Load( object sender, EventArgs e ) { + new CurrentLeasesPresenter( this ).Initialize( ); + } + + public void Display( IEnumerable< DisplayLeaseDTO > leases ) { + uxLeasesRepeater.DataSource = leases; + uxLeasesRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.designer.cs b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.designer.cs new file mode 100644 index 0000000..68acd07 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/CurrentLeases.aspx.designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class CurrentLeases { + + /// + /// uxLeasesRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxLeasesRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/Default.aspx b/slips/src/app/Marina.Web.UI/Default.aspx new file mode 100644 index 0000000..dd7f233 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Default.aspx @@ -0,0 +1,19 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Marina.Web.UI.Default" Title="Untitled Page" %> + + + +

Welcome

+

+ Welcome to Inland Marina located on the south shore Inland Lake, just a small + commute from major centres in the south west. +

+

+ Inland Marina was established in the 1967 shortly after Inland Lake was created + as a result of the South West damn. From it's humble beginnings, it has grown to + be the largest marina on Inland Lake. Due to the warm climate that extends year + round, Inland Lake has become a popular tourist destination in the South West. + Boat owners from California, Arizona, Nevada, and Utah are attracted to the + area. Inland Marina has 150 slips ranging in size from 16 to 28 feet in length. + Dock services include electrical and fresh water. +

+
diff --git a/slips/src/app/Marina.Web.UI/Default.aspx.cs b/slips/src/app/Marina.Web.UI/Default.aspx.cs new file mode 100644 index 0000000..9a6cecc --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Default.aspx.cs @@ -0,0 +1,8 @@ +using System; +using System.Web.UI; + +namespace Marina.Web.UI { + public partial class Default : Page { + protected void Page_Load( object sender, EventArgs e ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/Default.aspx.designer.cs b/slips/src/app/Marina.Web.UI/Default.aspx.designer.cs new file mode 100644 index 0000000..b6d29bc --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Default.aspx.designer.cs @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class Default { + } +} diff --git a/slips/src/app/Marina.Web.UI/DockView.aspx b/slips/src/app/Marina.Web.UI/DockView.aspx new file mode 100644 index 0000000..10d06f7 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/DockView.aspx @@ -0,0 +1,60 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="DockView.aspx.cs" Inherits="Marina.Web.UI.DockView" Title="Untitled Page" %> +<%@ Import namespace="System.ComponentModel"%> +<%@ Import namespace="Marina.Web.Commands"%> +<%@ Import namespace="Marina.Web.Views"%> + +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> +<%@ Import namespace="Marina.Presentation"%> + + + +
+

Dock: <%= DTO.Name %>

+ + + + + + + + + + + + + +
Location<%= DTO.LocationName %>
Water Service<%= DTO.WaterService %>
Electrical Service<%= DTO.ElectricalService %>
+
+
+

Available Slips

+ + + + + + + + + + + + + + + + + + + + + +
Dock NameSlip WidthSlip Length
<%# Transform.From(Container.DataItem).To().DockName %><%# Transform.From(Container.DataItem).To().Width %><%# Transform.From(Container.DataItem).To().Length %>Lease This Slip!
+ +
+
+ + +
diff --git a/slips/src/app/Marina.Web.UI/DockView.aspx.cs b/slips/src/app/Marina.Web.UI/DockView.aspx.cs new file mode 100644 index 0000000..722d2c5 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/DockView.aspx.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class DockView : Page, IDockView { + protected DockDisplayDTO DTO; + + protected override void OnInit( EventArgs e ) { + base.OnInit( e ); + new DockPresenter( this ).Initialize( ); + } + + public void Display( DockDisplayDTO dto ) { + DTO = dto; + } + + public void Display( IEnumerable< SlipDisplayDTO > availableSlips ) { + uxSlipsRepeater.DataSource = availableSlips; + uxSlipsRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/DockView.aspx.designer.cs b/slips/src/app/Marina.Web.UI/DockView.aspx.designer.cs new file mode 100644 index 0000000..a4f5686 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/DockView.aspx.designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class DockView { + + /// + /// uxSlipsRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxSlipsRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/Global.asax b/slips/src/app/Marina.Web.UI/Global.asax new file mode 100644 index 0000000..7b78699 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Global.asax @@ -0,0 +1 @@ +<%@ Application Language="C#" Inherits="Marina.Web.GlobalApplication"%> diff --git a/slips/src/app/Marina.Web.UI/LeaseSlip.aspx b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx new file mode 100644 index 0000000..260aa10 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx @@ -0,0 +1,46 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="LeaseSlip.aspx.cs" Inherits="Marina.Web.UI.LeaseSlip" Title="Untitled Page" %> + + + + +

Would you like to lease slip: <%= Slip.SlipId %>

+ +
+ + + + + + + + + + + + + + + + + +
Dock NameLocation NameLength (in feet)Width (in feet)
<%= Slip.DockName %><%= Slip.LocationName %><%= Slip.Length %><%= Slip.Width %>
+
+ +
+ Select Lease Duration: + +
+ + + +

+ <%= ResponseMessage %> +

+ +
+ diff --git a/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.cs b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.cs new file mode 100644 index 0000000..c5ead9b --- /dev/null +++ b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.cs @@ -0,0 +1,26 @@ +using System; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class LeaseSlip : Page, ILeaseSlipView { + protected void Page_Load( object sender, EventArgs e ) { + ILeaseSlipPresenter presenter = new LeaseSlipPresenter( this ); + presenter.Initialize( ); + uxSubmitButton.Click += delegate { presenter.SubmitLeaseRequest( ); }; + } + + public SlipDisplayDTO Slip; + public string ResponseMessage; + + public void Display( SlipDisplayDTO slip ) { + Slip = slip; + } + + public void Display( DisplayResponseLineDTO response ) { + ResponseMessage = response.Message; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.designer.cs b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.designer.cs new file mode 100644 index 0000000..0f28679 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/LeaseSlip.aspx.designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class LeaseSlip { + + /// + /// uxSubmitButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button uxSubmitButton; + } +} diff --git a/slips/src/app/Marina.Web.UI/Login.aspx b/slips/src/app/Marina.Web.UI/Login.aspx new file mode 100644 index 0000000..33cd3b9 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Login.aspx @@ -0,0 +1,36 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Marina.Web.UI.Login" Title="Untitled Page" %> +<%@ Import namespace="Marina.Web.Views"%> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + + + + + + + + + + +
user name:
password:
+ +

+ Need to register? +

+ + + +
    + + +
  • <%# Transform.From(Container.DataItem).To().Message %>
  • +
    + +
+ +
+ +
+ diff --git a/slips/src/app/Marina.Web.UI/Login.aspx.cs b/slips/src/app/Marina.Web.UI/Login.aspx.cs new file mode 100644 index 0000000..2ddd0e2 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Login.aspx.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class Login : Page, ILoginView { + protected void Page_Load( object sender, EventArgs e ) { + ILoginPresenter presenter = new LoginPresenter( this ); + uxLoginButton.Click += delegate { presenter.Login( ); }; + } + + public void Display( DisplayResponseLineDTO responseMessage ) { + IList< DisplayResponseLineDTO > messages = new List< DisplayResponseLineDTO >( ); + messages.Add( responseMessage ); + uxResponseMessagesRepeater.DataSource = messages; + uxResponseMessagesRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/Login.aspx.designer.cs b/slips/src/app/Marina.Web.UI/Login.aspx.designer.cs new file mode 100644 index 0000000..09d1252 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Login.aspx.designer.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class Login { + + /// + /// uxLoginButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button uxLoginButton; + + /// + /// uxResponseMessagesRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxResponseMessagesRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/Marina.Web.UI.csproj b/slips/src/app/Marina.Web.UI/Marina.Web.UI.csproj new file mode 100644 index 0000000..cc8e74f --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Marina.Web.UI.csproj @@ -0,0 +1,215 @@ + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {29824849-3D66-4ACF-8699-79BB60C30BD7} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Marina.Web.UI + Marina.Web.UI + v3.5 + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + AvailableSlips.aspx + ASPXCodeBehind + + + AvailableSlips.aspx + + + ContactUs.aspx + ASPXCodeBehind + + + ContactUs.aspx + + + CurrentLeases.aspx + ASPXCodeBehind + + + CurrentLeases.aspx + + + Default.aspx + ASPXCodeBehind + + + Default.aspx + + + DockView.aspx + ASPXCodeBehind + + + DockView.aspx + + + LeaseSlip.aspx + ASPXCodeBehind + + + LeaseSlip.aspx + + + Login.aspx + ASPXCodeBehind + + + Login.aspx + + + RegisterBoat.aspx + ASPXCodeBehind + + + RegisterBoat.aspx + + + Registration.aspx + ASPXCodeBehind + + + Registration.aspx + + + Site.Master + ASPXCodeBehind + + + Site.Master + + + UpdateCustomerRegistration.aspx + ASPXCodeBehind + + + UpdateCustomerRegistration.aspx + + + ViewRegisteredBoats.aspx + ASPXCodeBehind + + + ViewRegisteredBoats.aspx + + + WebServicesAPI.aspx + ASPXCodeBehind + + + WebServicesAPI.aspx + + + + + + + + + + + + + + + + + + + + + + + + + + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A} + Marina + + + + + + + + + Always + + + + + + + + + + + + + False + True + 1400 + / + + + False + False + + + + + \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/RegisterBoat.aspx b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx new file mode 100644 index 0000000..9047bef --- /dev/null +++ b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx @@ -0,0 +1,48 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="RegisterBoat.aspx.cs" Inherits="Marina.Web.UI.RegisterBoat" Title="Untitled Page" %> +<%@ Import namespace="Marina.Web.Views"%> + +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + +

Register Boat

+ + + +
    + + +
  • <%# Transform.From(Container.DataItem).To().Message %>
  • +
    + +
+ +
+ + + + + + + + + + + + + + + + + + +
registration number:
manufacturer:
model year:
length:
+ + + + +
+ diff --git a/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.cs b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.cs new file mode 100644 index 0000000..5fa7751 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class RegisterBoat : Page, IRegisterBoatView { + protected void Page_Load( object sender, EventArgs e ) { + IRegisterBoatPresenter presenter = new RegisterBoatPresenter( this ); + uxRegisterBoatButton.Click += delegate { presenter.SubmitRegistration( ); }; + } + + public void Display( IEnumerable< DisplayResponseLineDTO > response ) { + uxResponseRepeater.DataSource = response; + uxResponseRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.designer.cs b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.designer.cs new file mode 100644 index 0000000..a91ce97 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/RegisterBoat.aspx.designer.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class RegisterBoat { + + /// + /// uxResponseRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxResponseRepeater; + + /// + /// uxRegisterBoatButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button uxRegisterBoatButton; + } +} diff --git a/slips/src/app/Marina.Web.UI/Registration.aspx b/slips/src/app/Marina.Web.UI/Registration.aspx new file mode 100644 index 0000000..138ebae --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Registration.aspx @@ -0,0 +1,48 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Registration.aspx.cs" Inherits="Marina.Web.UI.Registration" Title="Untitled Page" EnableViewState="false" %> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + +

Registration

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
username:
password:
first name:
last name:
phone:
city:
+ + + + +
    + + +
  • <%# Transform.From(Container.DataItem).To().Message %>
  • +
    + +
+ +
+
diff --git a/slips/src/app/Marina.Web.UI/Registration.aspx.cs b/slips/src/app/Marina.Web.UI/Registration.aspx.cs new file mode 100644 index 0000000..2418421 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Registration.aspx.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class Registration : Page, ICustomerRegistrationView { + protected void Page_Load( object sender, EventArgs e ) { + ICustomerRegistrationPresenter presenter = new CustomerRegistrationPresenter( this ); + uxRegisterButton.Click += delegate { presenter.RegisterCustomer( ); }; + } + + public string UserName() { + return Request.Params[ "uxUserNameTextBox" ]; + } + + public string Password() { + return Request.Params[ "uxPasswordTextBox" ]; + } + + public string FirstName() { + return Request.Params[ "uxFirstNameTextBox" ]; + } + + public string LastName() { + return Request.Params[ "uxLastNameTextBox" ]; + } + + public string PhoneNumber() { + return Request.Params[ "uxPhoneNumberTextBox" ]; + } + + public string City() { + return Request.Params[ "uxCityTextBox" ]; + } + + public void Display( IEnumerable< DisplayResponseLineDTO > response ) { + uxResponseMessagesRepeater.DataSource = response; + uxResponseMessagesRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/Registration.aspx.designer.cs b/slips/src/app/Marina.Web.UI/Registration.aspx.designer.cs new file mode 100644 index 0000000..52ebc4e --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Registration.aspx.designer.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class Registration { + + /// + /// uxRegisterButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button uxRegisterButton; + + /// + /// uxResponseMessagesRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxResponseMessagesRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/Site.Master b/slips/src/app/Marina.Web.UI/Site.Master new file mode 100644 index 0000000..346b700 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Site.Master @@ -0,0 +1,89 @@ +<%@ Import namespace="Marina.Web.Views"%> +<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Marina.Web.UI.Site" EnableViewState="false" %> + + + + + Inland Marina Ltd + + + + + + +
+ + + +
+ + +
+
+
+

site actions

+
+ +
+ +
+
+

additional information

+
+
+

+ Inland Marina Ltd, is the largest marina on Inland Lake and has the capacity to house 150 boats + with plans to add another dock bringing their total capacity to 200 boats. We are currently concluding + negotiations to purchase a large marina facility in San Diego. +

+
+
+
+
+

Web Services API

+
+ +
+ +
+ +
+
+
+ + +
+
+
+ +
+ + + +
+ + diff --git a/slips/src/app/Marina.Web.UI/Site.Master.cs b/slips/src/app/Marina.Web.UI/Site.Master.cs new file mode 100644 index 0000000..a4ab4dd --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Site.Master.cs @@ -0,0 +1,8 @@ +using System; +using System.Web.UI; + +namespace Marina.Web.UI { + public partial class Site : MasterPage { + protected void Page_Load( object sender, EventArgs e ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/Site.Master.designer.cs b/slips/src/app/Marina.Web.UI/Site.Master.designer.cs new file mode 100644 index 0000000..7bae518 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Site.Master.designer.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class Site { + + /// + /// ContentPlaceHolder1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1; + + /// + /// form2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form2; + + /// + /// ContentPlaceHolder2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder2; + } +} diff --git a/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx new file mode 100644 index 0000000..f84ada1 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx @@ -0,0 +1,52 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="UpdateCustomerRegistration.aspx.cs" Inherits="Marina.Web.UI.UpdateCustomerRegistration" Title="Untitled Page" %> +<%@ Import namespace="Marina.Web.Views"%> +<%@ Import namespace="System.ComponentModel"%> +<%@ Import namespace="Marina.Infrastructure"%> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Web.UI"%> + + + + +

Update Registration

+ + + + + + + + + + + + + + + + + + + + + + + + + +
username:
password:
first name:
last name:
phone:
city:
+ + + + +
    + + +
  • <%# Transform.From( Container.DataItem ).To< DisplayResponseLineDTO >( ).Message %>
  • +
    + +
+ +
+ +
\ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.cs b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.cs new file mode 100644 index 0000000..7e4762f --- /dev/null +++ b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class UpdateCustomerRegistration : Page, IUpdateRegistrationView { + protected void Page_Load( object sender, EventArgs e ) { + UpdateCustomerRegistrationPresenter presenter = new UpdateCustomerRegistrationPresenter( this ); + presenter.Initialize( ); + uxUpdateButton.Click += delegate { presenter.UpdateRegistration( ); }; + } + + public void Display( CustomerRegistrationDisplayDTO customerRegistration ) { + CustomerRegistration = customerRegistration; + } + + public void Display( IEnumerable< DisplayResponseLineDTO > response ) { + uxResponseMessagesRepeater.DataSource = response; + uxResponseMessagesRepeater.DataBind( ); + } + + public CustomerRegistrationDisplayDTO CustomerRegistration; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.designer.cs b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.designer.cs new file mode 100644 index 0000000..8bdaa34 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/UpdateCustomerRegistration.aspx.designer.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class UpdateCustomerRegistration { + + /// + /// uxUpdateButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button uxUpdateButton; + + /// + /// uxResponseMessagesRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxResponseMessagesRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx new file mode 100644 index 0000000..70781f4 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx @@ -0,0 +1,34 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ViewRegisteredBoats.aspx.cs" Inherits="Marina.Web.UI.ViewRegisteredBoats" Title="Untitled Page" EnableViewState="false" %> +<%@ Import namespace="Marina.Presentation.DTO"%> +<%@ Import namespace="Marina.Infrastructure"%> + + + +

Your Registered Boats

+ + + + + + + + + + + + + + + + + + + + + + + +
Registration NumberManufacturerModel YearLength (in feet)
<%# Transform.From(Container.DataItem).To().RegistrationNumber %><%# Transform.From(Container.DataItem).To().Manufacturer %><%# Transform.From(Container.DataItem).To().ModelYear %><%# Transform.From(Container.DataItem).To().Length %>
+ +
+
diff --git a/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.cs b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.cs new file mode 100644 index 0000000..ab9bd77 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Web.UI; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; + +namespace Marina.Web.UI { + public partial class ViewRegisteredBoats : Page, IRegisteredBoatsView { + protected void Page_Load( object sender, EventArgs e ) { + new ViewRegisteredBoatsPresenter( this ).Initialize( ); + } + + public void Display( IEnumerable< BoatRegistrationDTO > boats ) { + uxBoatsRepeater.DataSource = boats; + uxBoatsRepeater.DataBind( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.designer.cs b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.designer.cs new file mode 100644 index 0000000..1c19862 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/ViewRegisteredBoats.aspx.designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class ViewRegisteredBoats { + + /// + /// uxBoatsRepeater control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater uxBoatsRepeater; + } +} diff --git a/slips/src/app/Marina.Web.UI/Web.config b/slips/src/app/Marina.Web.UI/Web.config new file mode 100644 index 0000000..290d934 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/Web.config @@ -0,0 +1,95 @@ + + + + + +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx new file mode 100644 index 0000000..ff4e738 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx @@ -0,0 +1,15 @@ +<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebServicesAPI.aspx.cs" Inherits="Marina.Web.UI.WebServicesAPI" Title="Untitled Page" %> + + + +

Our Web Services API

+

+ If you're interested in checking out our web services API check out: +

+ +
diff --git a/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.cs b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.cs new file mode 100644 index 0000000..9ffb517 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using System.Web.UI.HtmlControls; +using System.Xml.Linq; + +namespace Marina.Web.UI +{ + public partial class WebServicesAPI : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.designer.cs b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.designer.cs new file mode 100644 index 0000000..ffaa12b --- /dev/null +++ b/slips/src/app/Marina.Web.UI/WebServicesAPI.aspx.designer.cs @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Marina.Web.UI { + + + public partial class WebServicesAPI { + } +} diff --git a/slips/src/app/Marina.Web.UI/images/back.png b/slips/src/app/Marina.Web.UI/images/back.png new file mode 100644 index 0000000..60faea0 Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/back.png differ diff --git a/slips/src/app/Marina.Web.UI/images/graphic.jpg b/slips/src/app/Marina.Web.UI/images/graphic.jpg new file mode 100644 index 0000000..9d77757 Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/graphic.jpg differ diff --git a/slips/src/app/Marina.Web.UI/images/link.png b/slips/src/app/Marina.Web.UI/images/link.png new file mode 100644 index 0000000..7fb049c Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/link.png differ diff --git a/slips/src/app/Marina.Web.UI/images/logo.jpg b/slips/src/app/Marina.Web.UI/images/logo.jpg new file mode 100644 index 0000000..01c1bde Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/logo.jpg differ diff --git a/slips/src/app/Marina.Web.UI/images/menu.png b/slips/src/app/Marina.Web.UI/images/menu.png new file mode 100644 index 0000000..8efcaad Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/menu.png differ diff --git a/slips/src/app/Marina.Web.UI/images/menu_hover.png b/slips/src/app/Marina.Web.UI/images/menu_hover.png new file mode 100644 index 0000000..556801d Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/menu_hover.png differ diff --git a/slips/src/app/Marina.Web.UI/images/sbi_header.png b/slips/src/app/Marina.Web.UI/images/sbi_header.png new file mode 100644 index 0000000..2f59f1d Binary files /dev/null and b/slips/src/app/Marina.Web.UI/images/sbi_header.png differ diff --git a/slips/src/app/Marina.Web.UI/style/colour.css b/slips/src/app/Marina.Web.UI/style/colour.css new file mode 100644 index 0000000..f06194f --- /dev/null +++ b/slips/src/app/Marina.Web.UI/style/colour.css @@ -0,0 +1,85 @@ +html{height: 100%;} + +body +{ background: #837560; + color: #70695A; +} + +blockquote +{ background: #FFFFFF; + color: #70695A; + border-color: #767676; +} + +#main +{ background: #FFFFFF url(../images/back.png) repeat-y; + color: #70695A; +} + +#links, #footer, #menu, #menu li a +{ background: #FFFFFF url(../images/menu.png); + color: #DBD7D1; + border-color: #D7D7D7; +} + +#links a, #footer a, #links a:hover, #footer a:hover +{ background: transparent; + color: #DBD7D1; +} + +#logo +{ background: #FFFFFF url(../images/logo.jpg) no-repeat; + color: #70695A; +} + +#logo h1 +{ background: transparent; + color: #FFFFFF; +} + +h1, #column2 h1 +{ background: transparent; + color: #CE7014; + border-color: #CAAE90; +} + +#menu li a:hover, #menu li a#selected, #menu li a#selected:hover +{ background: #FFFFFF url(../images/menu_hover.png); + color: #70695A; +} + +#content, #column2 a, #column2 a:hover +{ background: transparent; + color: #70695A; +} + +.sidebaritem, .sidebaritem a, .sidebaritem a:hover +{ background: transparent; + color: #DBD7D1; +} + +.sbihead +{ background: #FFFFFF url(../images/sbi_header.png); + color: #70695A; +} + +.sbihead h1 +{ background: transparent; + color: #70695A; +} + +.sbilinks li a +{ background: #FFFFFF url(../images/link.png); + color: #DBD7D1; +} + +.sbilinks li a:hover +{ background: #B7B7B7; + color: #CE7014; +} + +input, textarea +{ background: #FFFFFF; + color: #70695A; + border-color: #CAAE90; +} diff --git a/slips/src/app/Marina.Web.UI/style/style.css b/slips/src/app/Marina.Web.UI/style/style.css new file mode 100644 index 0000000..89a1c21 --- /dev/null +++ b/slips/src/app/Marina.Web.UI/style/style.css @@ -0,0 +1,274 @@ +/* global */ +html{height: 100%;} + +body +{ font-family: verdana, arial, sans-serif; + padding: 0px; + margin: 0px; + font-size: .68em; +} + +p +{ margin: 0px; + padding: 0px 0px 16px 0px; + line-height: 1.7em; +} + +h1 +{ font-family: arial, sans-serif; + letter-spacing: .1em; +} + +h2 +{ margin: 0px; + padding: 0px 0px 4px 0px; + font-size: 100%; +} + +img{border: 0px;} + +a{outline: none;} + +/* image positioning - left, right and center */ +.left +{ float: left; + padding: 0px 8px 0px 0px; +} + +.right +{ float: right; + padding: 0px 0px 0px 8px; +} + +.center +{ display: block; + text-align: center; + margin: 0 auto; +} + +/* block quote */ +blockquote +{ margin: 20px 0px 20px 0px; + padding: 10px 20px 0px 20px; + border-left: 8px solid; +} + +/* unordered list */ +ul +{ margin: 8px 0px 0px 16px; + padding: 0px; +} + +ul li +{ list-style-type: square; + margin: 0px 0px 11px 0px; + padding: 0px; +} + +/* ordered list */ +ol +{ margin: 8px 0px 0px 24px; + padding: 0px; +} + +ol li +{ margin: 0px 0px 11px 0px; + padding: 0px; +} + +/* main container */ +#main +{ width: 780px; + margin-left: auto; + margin-right: auto; +} + +/* links above the logo / footer */ +#links, #footer +{ margin-left: auto; + margin-right: auto; + padding: 10px 21px 0px 19px; + width: 720px; + height: 26px; + font-size: 94%; + text-transform: uppercase; +} + +#links{text-align: right;} + +#footer{text-align: center;} + +#links a, #footer a{text-decoration: none;} + +#links a:hover, #footer a:hover{text-decoration: underline;} + +/* logo */ +#logo +{ margin-left: auto; + margin-right: auto; + width: 760px; + height: 100px; + text-align: left; +} + +#logo h1 +{ margin: 0px; + padding: 41px 0px 0px 19px; + font-size: 150%; + letter-spacing: .2em; +} + +/* navigation menu */ +#menu +{ height: 42px; + width: 760px; + margin-left: auto; + margin-right: auto; +} + +#menu ul{margin: 0px auto;} + +#menu li +{ float: left; + margin: 0px; + padding: 0px; +} + +#menu li a +{ display: block; + float: left; + height: 37px; + text-decoration: none; + padding: 3px 19px 2px 19px; + text-transform: uppercase; +} + +/* main content */ +#content +{ margin-left: auto; + margin-right: auto; + width: 760px; + height: auto; + padding: 0px; + overflow: hidden; +} + +/* column 1 - contains sidebar items */ +#column1 +{ width: 207px; + float: right; + padding: 16px 0px 15px 0px; +} + +.sidebaritem +{ text-align: left; + width: 188px; + float: left; + margin: 0px 0px 25px 0px; +} + +.sbihead +{ height: 14px; + width: 188px; + padding: 5px 0px 5px 19px; + text-transform: uppercase; +} + +.sbihead h1 +{ padding: 0px; + margin: 0px; + font-weight: bold; + font-size: 112%; +} + +.sbicontent{padding: 14px 8px 8px 19px;} + +.sbicontent p +{ line-height: 14px; + padding: 0px 0px 8px 0px; +} + +.sbilinks{padding: 0px;} + +.sbilinks ul{margin: 0px auto;} + +.sbilinks li +{ margin: 0px; + float: left; + list-style: none; +} + +.sbilinks li a , .sbilinks li a:hover +{ float: left; + height: 16px; + text-decoration: none; + padding: 5px 0px 4px 19px; + width: 188px; + border: 0px; +} + +/* column 2 - page content */ +#column2 +{ text-align: justify; + width: 512px; + float: left; + padding: 12px 3px 15px 19px; +} + +#column2 h1 +{ padding: 6px 0px 4px 0px; + margin: 0px 0px 12px 0px; + border-bottom: 1px solid; + font-size: 150%; + text-transform: uppercase; + font-weight: normal; +} + +.sidebaritem a, #column2 a, .sidebaritem a:hover, #column2 a:hover +{ padding: 0px 0px 2px 0px; + text-decoration: none; + border-bottom: 1px dashed; +} + +.sidebaritem a:hover, #column2 a:hover{border-bottom: 1px solid;} + +/* contact page - form layout */ +form{margin-top: 0px;} + +div.row +{ clear: both; + width: 448px; +} + +div.row span.formlabel +{ float: left; + width: 150px; + text-align: left; +} + +div.row span.forminput +{ float: right; + text-align: right; +} + +div.spacer +{ clear: both; + width: 80px; +} + +input, textarea +{ width: 259px; + font-family: verdana, arial, sans-serif; + border: 1px solid; + font-size: 100%; + margin: 2px; +} + +.submit +{ font-family: verdana, arial, sans-serif; + border: 1px solid; + width: 70px; + height: 22px; + cursor: pointer; + font-size: 100%; +} diff --git a/slips/src/app/Marina.Web.UI/windsor.config.xml b/slips/src/app/Marina.Web.UI/windsor.config.xml new file mode 100644 index 0000000..7dd706c --- /dev/null +++ b/slips/src/app/Marina.Web.UI/windsor.config.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/DatabaseDelete.cs b/slips/src/app/Marina/DataAccess/Builders/DatabaseDelete.cs new file mode 100644 index 0000000..801aba0 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/DatabaseDelete.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; + +namespace Marina.DataAccess.Builders { + public static class DatabaseDelete { + public static IQuery Where< T >( DatabaseColumn column, T equalsValue ) { + return new DeleteQueryBuilder< T >( column, equalsValue ).Build( ); + } + + private class DeleteQueryBuilder< T > : IDeleteQueryBuilder { + public DeleteQueryBuilder( DatabaseColumn column, T value ) { + _column = column; + _value = value; + } + + public override string ToString() { + return string.Format( "DELETE FROM [{0}] WHERE [{0}].[{1}] = @{1};", _column.TableName, _column.ColumnName ); + } + + public IEnumerable< DatabaseCommandParameter > Parameters() { + yield return new DatabaseCommandParameter( _column.ColumnName, _value ); + } + + public IQuery Build() { + return new Query( this ); + } + + private readonly DatabaseColumn _column; + private readonly T _value; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/DatabaseInsert.cs b/slips/src/app/Marina/DataAccess/Builders/DatabaseInsert.cs new file mode 100644 index 0000000..57c0c1d --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/DatabaseInsert.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using System.Text; + +namespace Marina.DataAccess.Builders { + public static class DatabaseInsert { + public static IInsertQueryBuilder Into( string tableName ) { + return new InsertQueryBuilder( tableName ); + } + + private class InsertQueryBuilder : IInsertQueryBuilder { + public InsertQueryBuilder( string tableName ) { + _tableName = tableName; + _parameters = new List< DatabaseCommandParameter >( ); + } + + public IEnumerable< DatabaseCommandParameter > Parameters() { + return _parameters; + } + + public IQuery Build() { + return new Query( this ); + } + + public IInsertQueryBuilder AddValue< T >( DatabaseColumn column, T value ) { + _parameters.Add( new DatabaseCommandParameter( column.ColumnName, value ) ); + return this; + } + + public override string ToString() { + StringBuilder builder = new StringBuilder( ); + builder.AppendFormat( "INSERT INTO {0} ({1}) VALUES ({2});SELECT @@IDENTITY;", _tableName, + GetParameterNames( string.Empty ), + GetParameterNames( "@" ) ); + return builder.ToString( ); + } + + private string GetParameterNames( string prefix ) { + StringBuilder builder = new StringBuilder( ); + foreach ( DatabaseCommandParameter parameter in _parameters ) { + builder.AppendFormat( "{0}{1},", prefix, parameter.ColumnName ); + } + builder.Remove( builder.Length - 1, 1 ); + return builder.ToString( ); + } + + private readonly string _tableName; + private readonly IList< DatabaseCommandParameter > _parameters; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/DatabaseSelect.cs b/slips/src/app/Marina/DataAccess/Builders/DatabaseSelect.cs new file mode 100644 index 0000000..6e61fff --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/DatabaseSelect.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using System.Text; + +namespace Marina.DataAccess.Builders { + public static class DatabaseSelect { + public static ISelectQueryBuilder From( string tableName ) { + return new SelectQueryBuilder( tableName ); + } + + private class SelectQueryBuilder : ISelectQueryBuilder { + public SelectQueryBuilder( string tableName ) { + _tableName = string.Format( "[{0}]", tableName ); + _innerJoins = new List< InnerJoin >( ); + _selectColumns = new List< DatabaseColumn >( ); + } + + public ISelectQueryBuilder AddColumn( DatabaseColumn column ) { + _selectColumns.Add( column ); + return this; + } + + public ISelectQueryBuilder InnerJoinOn( DatabaseColumn leftColumn, DatabaseColumn rightColumn ) { + _innerJoins.Add( new InnerJoin( leftColumn, rightColumn ) ); + return this; + } + + public ISelectQueryBuilder Where( DatabaseColumn column, string value ) { + _whereClause = new WhereClause( column, value ); + return this; + } + + public ISelectQueryBuilder Where< T >( DatabaseColumn column, T value ) { + return Where( column, value.ToString( ) ); + } + + public override string ToString() { + return + string.Format( "SELECT {0} FROM {1} {2} {3};", GetColumnNames( ), _tableName, GetInnerJoins( ), _whereClause ); + } + + public IEnumerable< DatabaseCommandParameter > Parameters() { + foreach ( DatabaseColumn databaseColumn in _selectColumns ) { + yield return new DatabaseCommandParameter( databaseColumn.ColumnName, string.Empty ); + } + } + + public IQuery Build() { + return new Query( this ); + } + + private string GetInnerJoins() { + StringBuilder builder = new StringBuilder( ); + foreach ( InnerJoin innerJoin in _innerJoins ) { + builder.Append( innerJoin.ToString( ) ); + } + return builder.ToString( ); + } + + private string GetColumnNames() { + StringBuilder builder = new StringBuilder( ); + foreach ( DatabaseColumn selectColumn in _selectColumns ) { + builder.AppendFormat( "{0},", selectColumn ); + } + builder.Remove( builder.Length - 1, 1 ); + return builder.ToString( ); + } + + private readonly string _tableName; + private readonly IList< DatabaseColumn > _selectColumns; + private readonly IList< InnerJoin > _innerJoins; + private WhereClause _whereClause; + + private class InnerJoin : IJoin { + public InnerJoin( DatabaseColumn leftColumn, DatabaseColumn rightColumn ) { + _leftColumn = leftColumn; + _rightColumn = rightColumn; + } + + public DatabaseColumn Left() { + return _leftColumn; + } + + public DatabaseColumn Right() { + return _rightColumn; + } + + public override string ToString() { + return + string.Format( "INNER JOIN [{0}] ON [{0}].[{1}] = [{2}].[{3}]", + _leftColumn.TableName, + _leftColumn.ColumnName, + _rightColumn.TableName, + _rightColumn.ColumnName ); + } + + private readonly DatabaseColumn _leftColumn; + private readonly DatabaseColumn _rightColumn; + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/DatabaseUpdate.cs b/slips/src/app/Marina/DataAccess/Builders/DatabaseUpdate.cs new file mode 100644 index 0000000..8b90edc --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/DatabaseUpdate.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Text; + +namespace Marina.DataAccess.Builders { + public static class DatabaseUpdate { + public static IUpdateQueryBuilder Where< T >( DatabaseColumn whereColumn, T whereValue ) { + return new UpdateQueryBuilder( whereColumn, whereValue.ToString( ) ); + } + + private class UpdateQueryBuilder : IUpdateQueryBuilder { + public UpdateQueryBuilder( DatabaseColumn whereColumn, string whereValue ) + : this( new List< DatabaseCommandParameter >( ), new WhereClause( whereColumn, whereValue ) ) {} + + public UpdateQueryBuilder( IList< DatabaseCommandParameter > parameters, WhereClause where ) { + _parameters = parameters; + _where = where; + } + + public IEnumerable< DatabaseCommandParameter > Parameters() { + return _parameters; + } + + public IQuery Build() { + return new Query( this ); + } + + public IUpdateQueryBuilder Add( DatabaseColumn column, string value ) { + _parameters.Add( new DatabaseCommandParameter( column.ColumnName, value ) ); + return this; + } + + public override string ToString() { + StringBuilder builder = new StringBuilder( ); + builder.AppendFormat( "UPDATE [{0}] SET {1};", _where.Column( ).TableName, GetParameterNames( ) ); + return builder.ToString( ); + } + + private string GetParameterNames() { + StringBuilder builder = new StringBuilder( ); + foreach ( DatabaseCommandParameter parameter in _parameters ) { + builder.AppendFormat( "[{0}].[{1}] = @{1},", _where.Column( ).TableName, parameter.ColumnName ); + } + builder.Remove( builder.Length - 1, 1 ); + builder.Append( _where ); + return builder.ToString( ); + } + + private readonly IList< DatabaseCommandParameter > _parameters; + private readonly WhereClause _where; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IDeleteQueryBuilder.cs b/slips/src/app/Marina/DataAccess/Builders/IDeleteQueryBuilder.cs new file mode 100644 index 0000000..2b7290a --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IDeleteQueryBuilder.cs @@ -0,0 +1,3 @@ +namespace Marina.DataAccess.Builders { + public interface IDeleteQueryBuilder : IQueryBuilder {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IInsertQueryBuilder.cs b/slips/src/app/Marina/DataAccess/Builders/IInsertQueryBuilder.cs new file mode 100644 index 0000000..946c914 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IInsertQueryBuilder.cs @@ -0,0 +1,5 @@ +namespace Marina.DataAccess.Builders { + public interface IInsertQueryBuilder : IQueryBuilder { + IInsertQueryBuilder AddValue< T >( DatabaseColumn column, T value ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IJoin.cs b/slips/src/app/Marina/DataAccess/Builders/IJoin.cs new file mode 100644 index 0000000..c4ae46f --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IJoin.cs @@ -0,0 +1,6 @@ +namespace Marina.DataAccess.Builders { + internal interface IJoin { + DatabaseColumn Left(); + DatabaseColumn Right(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IQuery.cs b/slips/src/app/Marina/DataAccess/Builders/IQuery.cs new file mode 100644 index 0000000..a45527f --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IQuery.cs @@ -0,0 +1,7 @@ +using System.Data; + +namespace Marina.DataAccess.Builders { + public interface IQuery { + void Prepare( IDbCommand command ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IQueryBuilder.cs b/slips/src/app/Marina/DataAccess/Builders/IQueryBuilder.cs new file mode 100644 index 0000000..175c2d5 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IQueryBuilder.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Marina.DataAccess.Builders { + public interface IQueryBuilder { + IEnumerable< DatabaseCommandParameter > Parameters(); + + IQuery Build(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/ISelectQueryBuilder.cs b/slips/src/app/Marina/DataAccess/Builders/ISelectQueryBuilder.cs new file mode 100644 index 0000000..058a7a1 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/ISelectQueryBuilder.cs @@ -0,0 +1,11 @@ +namespace Marina.DataAccess.Builders { + public interface ISelectQueryBuilder : IQueryBuilder { + ISelectQueryBuilder AddColumn( DatabaseColumn column ); + + ISelectQueryBuilder InnerJoinOn( DatabaseColumn leftColumn, DatabaseColumn rightColumn ); + + ISelectQueryBuilder Where( DatabaseColumn column, string value ); + + ISelectQueryBuilder Where< T >( DatabaseColumn column, T value ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/IUpdateQueryBuilder.cs b/slips/src/app/Marina/DataAccess/Builders/IUpdateQueryBuilder.cs new file mode 100644 index 0000000..c599243 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/IUpdateQueryBuilder.cs @@ -0,0 +1,5 @@ +namespace Marina.DataAccess.Builders { + public interface IUpdateQueryBuilder : IQueryBuilder { + IUpdateQueryBuilder Add( DatabaseColumn column, string value ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/Query.cs b/slips/src/app/Marina/DataAccess/Builders/Query.cs new file mode 100644 index 0000000..0b95bf1 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/Query.cs @@ -0,0 +1,22 @@ +using System.Data; + +namespace Marina.DataAccess.Builders { + public class Query : IQuery { + public Query( IQueryBuilder builder ) { + _builder = builder; + } + + public void Prepare( IDbCommand command ) { + command.CommandText = _builder.ToString( ); + command.CommandType = CommandType.Text; + foreach ( DatabaseCommandParameter parameter in _builder.Parameters( ) ) { + IDataParameter commandParameter = command.CreateParameter( ); + commandParameter.ParameterName = "@" + parameter.ColumnName; + commandParameter.Value = parameter.Value; + command.Parameters.Add( commandParameter ); + } + } + + private readonly IQueryBuilder _builder; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/SqlQuery.cs b/slips/src/app/Marina/DataAccess/Builders/SqlQuery.cs new file mode 100644 index 0000000..c6b2b47 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/SqlQuery.cs @@ -0,0 +1,18 @@ +using System.Data; + +namespace Marina.DataAccess.Builders { + public class SqlQuery : IQuery { + public SqlQuery( string sqlQuery ) { + _sqlQuery = sqlQuery; + } + + public void Prepare( IDbCommand command ) { + if ( command != null ) { + command.CommandText = _sqlQuery; + command.CommandType = CommandType.Text; + } + } + + private readonly string _sqlQuery; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Builders/WhereClause.cs b/slips/src/app/Marina/DataAccess/Builders/WhereClause.cs new file mode 100644 index 0000000..5768fde --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Builders/WhereClause.cs @@ -0,0 +1,27 @@ +namespace Marina.DataAccess.Builders { + public class WhereClause { + public WhereClause( DatabaseColumn column, string value ) { + _column = column; + _value = value; + } + + public DatabaseColumn Column() { + return _column; + } + + public string Value() { + return _value; + } + + public string ToSql() { + return ToString( ); + } + + public override string ToString() { + return string.Format( " WHERE [{0}].[{1}] = {2};", _column.TableName, _column.ColumnName, _value ); + } + + private readonly DatabaseColumn _column; + private readonly string _value; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/BoatDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/BoatDataMapper.cs new file mode 100644 index 0000000..fbd33cd --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/BoatDataMapper.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class BoatDataMapper : IBoatDataMapper { + public BoatDataMapper() : this( Resolve.DependencyFor< IDatabaseGateway >( ) ) {} + + public BoatDataMapper( IDatabaseGateway gateway ) { + _gateway = gateway; + } + + public IEnumerable< IBoat > AllBoatsFor( long customerId ) { + return Map.From( _gateway.FindAllRowsMatching( Queries.SelectBoatsFor( customerId ) ) ); + } + + public void Insert( IEnumerable< IBoat > boats, long forCustomerId ) { + _gateway.Execute( Queries.InsertQueriesFor( boats, forCustomerId ) ); + } + + public void Update( IEnumerable< IBoat > boats, long forCustomerId ) { + using ( IDatabaseTransaction transaction = new DatabaseTransaction( ) ) { + _gateway.Execute( DatabaseDelete.Where( BoatTable.CustomerID, forCustomerId ) ); + Insert( boats, forCustomerId ); + transaction.Commit( ); + } + } + + private readonly IDatabaseGateway _gateway; + + private class Queries { + public static IQuery SelectBoatsFor( long customerId ) { + return DatabaseSelect.From( BoatTable.TableName ) + .AddColumn( BoatTable.Length ) + .AddColumn( BoatTable.Manufacturer ) + .AddColumn( BoatTable.ModelYear ) + .AddColumn( BoatTable.RegistrationNumber ) + .AddColumn( BoatTable.BoatID ) + .Where( BoatTable.CustomerID, customerId.ToString( ) ).Build( ); + } + + public static IEnumerable< IQuery > InsertQueriesFor( IEnumerable< IBoat > boats, long customerId ) { + foreach ( IBoat boat in boats ) { + yield return DatabaseInsert.Into( BoatTable.TableName ) + .AddValue( BoatTable.CustomerID, customerId ) + .AddValue( BoatTable.Length, boat.LengthInFeet( ) ) + .AddValue( BoatTable.Manufacturer, boat.Manufacturer( ) ) + .AddValue( BoatTable.ModelYear, boat.YearOfModel( ).Year ) + .AddValue( BoatTable.RegistrationNumber, boat.RegistrationNumber( ) ).Build( ); + } + } + } + + private class Map { + public static IEnumerable< IBoat > From( IEnumerable< IDatabaseRow > rows ) { + foreach ( IDatabaseRow dataRow in rows ) { + yield return new Boat( + dataRow.From< long >( BoatTable.BoatID ), + dataRow.From< string >( BoatTable.RegistrationNumber ), + dataRow.From< string >( BoatTable.Manufacturer ), + dataRow.From< int >( BoatTable.ModelYear ) != 0 + ? new DateTime( dataRow.From< int >( BoatTable.ModelYear ), 1, 01 ) + : DateTime.MinValue, + dataRow.From< long >( BoatTable.Length ) + ); + } + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/CustomerDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/CustomerDataMapper.cs new file mode 100644 index 0000000..cdc56be --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/CustomerDataMapper.cs @@ -0,0 +1,82 @@ +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class CustomerDataMapper : ICustomerDataMapper { + public CustomerDataMapper() : this + ( + Resolve.DependencyFor< IDatabaseGateway >( ), + Resolve.DependencyFor< IBoatDataMapper >( ), + Resolve.DependencyFor< ILeaseDataMapper >( ), + Resolve.DependencyFor< IRegistrationDataMapper >( ) + ) {} + + public CustomerDataMapper( IDatabaseGateway gateway, IBoatDataMapper boatMapper, ILeaseDataMapper leaseMapper, + IRegistrationDataMapper registrationMapper ) { + _gateway = gateway; + _boatMapper = boatMapper; + _leaseMapper = leaseMapper; + _registrationMapper = registrationMapper; + } + + public ICustomer FindBy( long customerId ) { + if ( customerId > 0 ) { + return new Customer( customerId, + _boatMapper.AllBoatsFor( customerId ), + _leaseMapper.AllLeasesFor( customerId ), + _registrationMapper.For( customerId ) ); + } + return null; + } + + public ICustomer FindBy( string username ) { + IDatabaseRow row = _gateway.LoadRowUsing( Queries.SelectCustomerBy( username ) ); + return FindBy( row.From< long >( AuthorizationTable.CustomerID ) ); + } + + public void Insert( ICustomer customer ) { + using ( IDatabaseTransaction workUnit = new DatabaseTransaction( ) ) { + customer.ChangeIdTo( _gateway.ExecuteScalar( Queries.Insert( ) ) ); + _registrationMapper.Insert( customer.Registration( ), customer.ID( ) ); + _boatMapper.Insert( customer.RegisteredBoats( ), customer.ID( ) ); + _leaseMapper.Insert( customer.Leases( ), customer.ID( ) ); + workUnit.Commit( ); + } + } + + public void Update( ICustomer customer ) { + using ( IDatabaseTransaction workUnit = new DatabaseTransaction( ) ) { + _registrationMapper.Update( customer.Registration( ), customer.ID( ) ); + _boatMapper.Update( customer.RegisteredBoats( ), customer.ID( ) ); + _leaseMapper.Update( customer.Leases( ), customer.ID( ) ); + workUnit.Commit( ); + } + } + + private readonly IDatabaseGateway _gateway; + private readonly IBoatDataMapper _boatMapper; + private readonly ILeaseDataMapper _leaseMapper; + private readonly IRegistrationDataMapper _registrationMapper; + + private static class Queries { + public static IQuery Insert() { + return DatabaseInsert.Into( CustomerTable.TableName ) + .AddValue( CustomerTable.FirstName, string.Empty ) + .AddValue( CustomerTable.LastName, string.Empty ) + .AddValue( CustomerTable.Phone, string.Empty ) + .AddValue( CustomerTable.City, string.Empty ).Build( ); + } + + public static IQuery SelectCustomerBy( string username ) { + return DatabaseSelect.From( AuthorizationTable.TableName ) + .AddColumn( AuthorizationTable.CustomerID ) + .AddColumn( AuthorizationTable.UserName ) + .Where( AuthorizationTable.UserName, "'" + username + "'" ) + .Build( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/DockDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/DockDataMapper.cs new file mode 100644 index 0000000..bf2ae13 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/DockDataMapper.cs @@ -0,0 +1,54 @@ +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class DockDataMapper : IDockDataMapper { + public DockDataMapper() : this( Resolve.DependencyFor< IDatabaseGateway >( ) ) {} + + public DockDataMapper( IDatabaseGateway gateway ) { + _gateway = gateway; + } + + public IDock FindBy( long dockId ) { + return Map.From( _gateway.LoadRowUsing( Queries.SelectDockBy( dockId ) ) ); + } + + private readonly IDatabaseGateway _gateway; + + private static class Queries { + public static IQuery SelectDockBy( long dockId ) { + return DatabaseSelect + .From( DockTable.TableName ) + .AddColumn( DockTable.DockID ) + .AddColumn( DockTable.DockName ) + .AddColumn( DockTable.LocationId ) + .AddColumn( DockTable.WaterService ) + .AddColumn( DockTable.ElectricalService ) + .AddColumn( LocationTable.Name ) + .InnerJoinOn( LocationTable.ID, DockTable.LocationId ) + .Where( DockTable.DockID, dockId ).Build( ); + } + } + + private class Map { + public static IDock From( IDatabaseRow row ) { + return new Dock( + row.From< long >( DockTable.DockID ), + row.From< string >( DockTable.DockName ), + new Location( row.From< string >( LocationTable.Name ) ), + GetEnabledUtilities( row ) + ); + } + + private static IUtility GetEnabledUtilities( IDatabaseRow row ) { + return Utilities.For( + row.From< bool >( DockTable.WaterService ) ? Utilities.Water : null, + row.From< bool >( DockTable.ElectricalService ) ? Utilities.Electrical : null + ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/IBoatDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/IBoatDataMapper.cs new file mode 100644 index 0000000..bcdb7d1 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/IBoatDataMapper.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.DataMappers { + public interface IBoatDataMapper { + IEnumerable< IBoat > AllBoatsFor( long customerId ); + + void Insert( IEnumerable< IBoat > boats, long forCustomerId ); + + void Update( IEnumerable< IBoat > boats, long forCustomerId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/ICustomerDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/ICustomerDataMapper.cs new file mode 100644 index 0000000..fc757e7 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/ICustomerDataMapper.cs @@ -0,0 +1,11 @@ +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.DataMappers { + public interface ICustomerDataMapper : IDataMapper< ICustomer > { + void Insert( ICustomer customer ); + + void Update( ICustomer customer ); + + ICustomer FindBy( string username ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/IDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/IDataMapper.cs new file mode 100644 index 0000000..249eeb7 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/IDataMapper.cs @@ -0,0 +1,5 @@ +namespace Marina.DataAccess.DataMappers { + public interface IDataMapper< T > { + T FindBy( long id ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/IDockDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/IDockDataMapper.cs new file mode 100644 index 0000000..5140eb1 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/IDockDataMapper.cs @@ -0,0 +1,6 @@ +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.DataMappers { + public interface IDockDataMapper : IDataMapper< IDock > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/ILeaseDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/ILeaseDataMapper.cs new file mode 100644 index 0000000..c7134d7 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/ILeaseDataMapper.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.DataMappers { + public interface ILeaseDataMapper { + IEnumerable< ISlipLease > AllLeasesFor( long customerId ); + + void Insert( IEnumerable< ISlipLease > leases, long forCustomerId ); + + void Update( IEnumerable< ISlipLease > leases, long forCustomerId ); + + bool IsLeased( long slipId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/IRegistrationDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/IRegistrationDataMapper.cs new file mode 100644 index 0000000..a9f01dc --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/IRegistrationDataMapper.cs @@ -0,0 +1,11 @@ +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.DataMappers { + public interface IRegistrationDataMapper { + IRegistration For( long customerId ); + + void Insert( IRegistration registration, long forCustomerId ); + + void Update( IRegistration registration, long forCustomerId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/ISlipDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/ISlipDataMapper.cs new file mode 100644 index 0000000..99ff069 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/ISlipDataMapper.cs @@ -0,0 +1,9 @@ +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; + +namespace Marina.DataAccess.DataMappers { + public interface ISlipDataMapper : IDataMapper< ISlip > { + IRichEnumerable< ISlip > AllSlips(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/LeaseDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/LeaseDataMapper.cs new file mode 100644 index 0000000..8214b05 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/LeaseDataMapper.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class LeaseDataMapper : ILeaseDataMapper { + public LeaseDataMapper() + : this( Resolve.DependencyFor< IDatabaseGateway >( ), Resolve.DependencyFor< ISlipDataMapper >( ) ) {} + + public LeaseDataMapper( IDatabaseGateway gateway, ISlipDataMapper slipMapper ) { + _gateway = gateway; + _slipMapper = slipMapper; + } + + public IEnumerable< ISlipLease > AllLeasesFor( long customerId ) { + foreach ( IDatabaseRow row in _gateway.FindAllRowsMatching( Queries.SelectLeasesFor( customerId ) ) ) { + yield return + new SlipLease( + _slipMapper.FindBy( row.From< long >( LeaseTable.SlipID ) ), + LeaseDurations.FindFor( row.From< DateTime >( LeaseTable.StartDate ), row.From< DateTime >( LeaseTable.EndDate ) ), + row.From< DateTime >( LeaseTable.StartDate ), + row.From< DateTime >( LeaseTable.EndDate ) + ); + } + } + + public void Insert( IEnumerable< ISlipLease > leases, long forCustomerId ) { + using ( IDatabaseTransaction transaction = new DatabaseTransaction( ) ) { + IList< IQuery > queries = new List< IQuery >( ); + foreach ( ISlipLease lease in leases ) { + queries.Add( + DatabaseInsert.Into( LeaseTable.TableName ) + .AddValue( LeaseTable.StartDate, lease.StartDate( ) ) + .AddValue( LeaseTable.EndDate, lease.ExpiryDate( ) ) + .AddValue( LeaseTable.SlipID, lease.Slip( ).ID( ) ) + .AddValue( LeaseTable.CustomerID, forCustomerId ) + .AddValue( LeaseTable.LeaseTypeID, lease.Duration( ).ID( ) ).Build( ) + ); + } + _gateway.Execute( queries ); + transaction.Commit( ); + } + } + + public void Update( IEnumerable< ISlipLease > leases, long forCustomerId ) { + using ( IDatabaseTransaction transaction = new DatabaseTransaction( ) ) { + _gateway.Execute( DatabaseDelete.Where( LeaseTable.CustomerID, forCustomerId ) ); + Insert( leases, forCustomerId ); + transaction.Commit( ); + } + } + + public bool IsLeased( long slipId ) { + IQuery query = + DatabaseSelect.From( LeaseTable.TableName ).AddColumn( LeaseTable.SlipID ).Where( LeaseTable.SlipID, slipId ).Build( ); + + return !_gateway.LoadRowUsing( query ).Equals( DatabaseRow.Blank ); + } + + private readonly IDatabaseGateway _gateway; + private readonly ISlipDataMapper _slipMapper; + + private static class Queries { + public static IQuery SelectLeasesFor( long customerId ) { + return DatabaseSelect + .From( LeaseTable.TableName ) + .AddColumn( LeaseTable.EndDate ) + .AddColumn( LeaseTable.ID ) + .AddColumn( LeaseTable.LeaseTypeID ) + .AddColumn( LeaseTable.SlipID ) + .AddColumn( LeaseTable.StartDate ) + .Where( LeaseTable.CustomerID, customerId ).Build( ); + } + + public static IQuery SelectLeaseFor( long slipId ) { + return DatabaseSelect.From( LeaseTable.TableName ) + .AddColumn( LeaseTable.StartDate ) + .AddColumn( LeaseTable.EndDate ) + .Where( LeaseTable.SlipID, slipId ).Build( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/RegistrationDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/RegistrationDataMapper.cs new file mode 100644 index 0000000..5c2cd41 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/RegistrationDataMapper.cs @@ -0,0 +1,88 @@ +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class RegistrationDataMapper : IRegistrationDataMapper { + public RegistrationDataMapper() : this( Resolve.DependencyFor< IDatabaseGateway >( ) ) {} + + public RegistrationDataMapper( IDatabaseGateway gateway ) { + _gateway = gateway; + } + + public IRegistration For( long customerId ) { + return Mappers.From( _gateway.LoadRowUsing( Queries.SelectRegistrationFor( customerId ) ) ); + } + + public void Insert( IRegistration registration, long forCustomerId ) { + using ( IDatabaseTransaction unitOfWork = new DatabaseTransaction( ) ) { + _gateway.Execute( Queries.Insert( registration, forCustomerId ), + Queries.UpdateCustomer( registration, forCustomerId ) ); + unitOfWork.Commit( ); + } + } + + public void Update( IRegistration registration, long forCustomerId ) { + using ( IDatabaseTransaction unitOfWork = new DatabaseTransaction( ) ) { + _gateway.Execute( Queries.UpdateCustomer( registration, forCustomerId ), + Queries.UpdateAuthorization( registration, forCustomerId ) ); + unitOfWork.Commit( ); + } + } + + private readonly IDatabaseGateway _gateway; + + private class Queries { + public static IQuery SelectRegistrationFor( long customerId ) { + return DatabaseSelect.From( CustomerTable.TableName ) + .AddColumn( CustomerTable.FirstName ) + .AddColumn( CustomerTable.LastName ) + .AddColumn( CustomerTable.Phone ) + .AddColumn( CustomerTable.City ) + .AddColumn( AuthorizationTable.UserName ) + .AddColumn( AuthorizationTable.Password ) + .InnerJoinOn( AuthorizationTable.CustomerID, CustomerTable.CustomerID ) + .Where( CustomerTable.CustomerID, customerId.ToString( ) ).Build( ); + } + + public static IQuery Insert( IRegistration registration, long forCustomerId ) { + return DatabaseInsert.Into( AuthorizationTable.TableName ) + .AddValue( AuthorizationTable.CustomerID, forCustomerId.ToString( ) ) + .AddValue( AuthorizationTable.UserName, registration.Username( ) ) + .AddValue( AuthorizationTable.Password, registration.Password( ) ) + .Build( ); + } + + public static IQuery UpdateCustomer( IRegistration registration, long forCustomerId ) { + return DatabaseUpdate.Where( CustomerTable.CustomerID, forCustomerId ) + .Add( CustomerTable.FirstName, registration.FirstName( ) ) + .Add( CustomerTable.LastName, registration.LastName( ) ) + .Add( CustomerTable.Phone, registration.PhoneNumber( ) ) + .Add( CustomerTable.City, registration.City( ) ) + .Build( ); + } + + public static IQuery UpdateAuthorization( IRegistration registration, long forCustomerId ) { + return DatabaseUpdate.Where( AuthorizationTable.CustomerID, forCustomerId ) + .Add( AuthorizationTable.UserName, registration.Username( ) ) + .Add( AuthorizationTable.Password, registration.Password( ) ) + .Build( ); + } + } + + private class Mappers { + public static IRegistration From( IDatabaseRow row ) { + return new CustomerRegistration( + row.From< string >( AuthorizationTable.UserName ), + row.From< string >( AuthorizationTable.Password ), + row.From< string >( CustomerTable.FirstName ), + row.From< string >( CustomerTable.LastName ), + row.From< string >( CustomerTable.Phone ), + row.From< string >( CustomerTable.City ) + ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DataMappers/SlipDataMapper.cs b/slips/src/app/Marina/DataAccess/DataMappers/SlipDataMapper.cs new file mode 100644 index 0000000..67f7d69 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DataMappers/SlipDataMapper.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.DataMappers { + public class SlipDataMapper : ISlipDataMapper { + public SlipDataMapper( IDatabaseGateway gateway ) { + _gateway = gateway; + } + + public ISlip FindBy( long slipId ) { + return Map.From( _gateway.LoadRowUsing( Queries.SelectSlipBy( slipId ) ) ); + } + + public IRichEnumerable< ISlip > AllSlips() { + return new RichEnumerable< ISlip >( FetchAllSlips( ) ); + } + + private IEnumerable< ISlip > FetchAllSlips() { + return Map.From( _gateway.FindAllRowsMatching( Queries.SelectAllSlips( ) ) ); + } + + private readonly IDatabaseGateway _gateway; + + private static class Queries { + public static IQuery SelectAllSlips() { + return SelectAllColumns( ).Build( ); + } + + public static IQuery SelectSlipBy( long slipId ) { + return SelectAllColumns( ).Where( SlipTable.ID, slipId ).Build( ); + } + + private static ISelectQueryBuilder SelectAllColumns() { + return DatabaseSelect + .From( SlipTable.TableName ) + .AddColumn( SlipTable.ID ) + .AddColumn( SlipTable.Width ) + .AddColumn( SlipTable.Length ) + .AddColumn( SlipTable.DockID ) + .AddColumn( DockTable.DockName ) + .AddColumn( DockTable.WaterService ) + .AddColumn( DockTable.ElectricalService ) + .AddColumn( LocationTable.Name ) + .InnerJoinOn( DockTable.DockID, SlipTable.DockID ) + .InnerJoinOn( LocationTable.ID, DockTable.LocationId ); + } + } + + private static class Map { + public static IEnumerable< ISlip > From( IEnumerable< IDatabaseRow > rows ) { + return new EnumerableMapper< IDatabaseRow, ISlip >( new DatabaseRowToSlipMapper( ) ).MapFrom( rows ); + } + + public static ISlip From( IDatabaseRow row ) { + return new DatabaseRowToSlipMapper( ).MapFrom( row ); + } + + private class DatabaseRowToSlipMapper : IMapper< IDatabaseRow, ISlip > { + public DatabaseRowToSlipMapper() + : this( Resolve.DependencyFor< ILeaseDataMapper >( ) ) {} + + public DatabaseRowToSlipMapper( ILeaseDataMapper leaseDataMapper ) { + this.leaseDataMapper = leaseDataMapper; + } + + public ISlip MapFrom( IDatabaseRow row ) { + return new Slip( + row.From< long >( SlipTable.ID ), + CreateDockFrom( row ), + row.From< int >( SlipTable.Width ), + row.From< int >( SlipTable.Length ), + leaseDataMapper.IsLeased( row.From< long >( SlipTable.ID ) ) + ); + } + + private static Dock CreateDockFrom( IDatabaseRow row ) { + return new Dock( + row.From< long >( DockTable.DockID ), + row.From< string >( DockTable.DockName ), + new Location( row.From< string >( LocationTable.Name ) ), + Utilities.For( + row.From< bool >( DockTable.WaterService ) ? Utilities.Water : null, + row.From< bool >( DockTable.ElectricalService ) ? Utilities.Electrical : null + ) + ); + } + + private readonly ILeaseDataMapper leaseDataMapper; + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseColumn.cs b/slips/src/app/Marina/DataAccess/DatabaseColumn.cs new file mode 100644 index 0000000..cc79200 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseColumn.cs @@ -0,0 +1,23 @@ +namespace Marina.DataAccess { + public class DatabaseColumn { + internal DatabaseColumn( string tableName, string columnName ) { + _tableName = tableName; + _columnName = columnName; + } + + public string TableName { + get { return _tableName; } + } + + public string ColumnName { + get { return _columnName; } + } + + public override string ToString() { + return string.Format( "[{0}].[{1}]", _tableName, _columnName ); + } + + private readonly string _tableName; + private readonly string _columnName; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseCommand.cs b/slips/src/app/Marina/DataAccess/DatabaseCommand.cs new file mode 100644 index 0000000..f394ec0 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Data; + +namespace Marina.DataAccess { + public class DatabaseCommand : IDatabaseCommand { + public DatabaseCommand( IDbCommand command ) { + _command = command; + } + + public DataTable ExecuteQuery() { + DataTable table = new DataTable( ); + table.Load( _command.ExecuteReader( ) ); + return table; + } + + public long ExecuteScalarQuery() { + object scalar = _command.ExecuteScalar( ); + return DBNull.Value != scalar ? Convert.ToInt32( scalar ) : -1; + } + + private readonly IDbCommand _command; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseCommandParameter.cs b/slips/src/app/Marina/DataAccess/DatabaseCommandParameter.cs new file mode 100644 index 0000000..84a0675 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseCommandParameter.cs @@ -0,0 +1,19 @@ +namespace Marina.DataAccess { + public class DatabaseCommandParameter { + public DatabaseCommandParameter( string columnName, object value ) { + _columnName = columnName; + _value = value; + } + + public string ColumnName { + get { return _columnName; } + } + + public object Value { + get { return _value; } + } + + private readonly string _columnName; + private readonly object _value; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseConfiguration.cs b/slips/src/app/Marina/DataAccess/DatabaseConfiguration.cs new file mode 100644 index 0000000..f70a437 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseConfiguration.cs @@ -0,0 +1,22 @@ +using System.Configuration; + +namespace Marina.DataAccess { + public class DatabaseConfiguration : IDatabaseConfiguration { + private readonly ConnectionStringSettings _connectionSettings; + + public DatabaseConfiguration() + : this( ConfigurationManager.ConnectionStrings[ ConfigurationManager.AppSettings[ "ActiveConnection" ] ] ) {} + + public DatabaseConfiguration( ConnectionStringSettings connectionSettings ) { + _connectionSettings = connectionSettings; + } + + public string ConnectionString() { + return _connectionSettings.ConnectionString; + } + + public string ProviderName() { + return _connectionSettings.ProviderName; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseConnection.cs b/slips/src/app/Marina/DataAccess/DatabaseConnection.cs new file mode 100644 index 0000000..b08399f --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseConnection.cs @@ -0,0 +1,38 @@ +using System; +using System.Data; +using Marina.DataAccess.Builders; + +namespace Marina.DataAccess { + public class DatabaseConnection : IDatabaseConnection { + private readonly IDbConnection _connection; + + public DatabaseConnection() : this( new DatabaseConfiguration( ), new DatabaseProviderFactory( ) ) {} + + public DatabaseConnection( IDatabaseConfiguration configuration, IDatabaseProviderFactory providerFactory ) { + _connection = providerFactory.CreateConnectionFor( configuration.ProviderName( ) ); + _connection.ConnectionString = configuration.ConnectionString( ); + _connection.Open( ); + } + + public IDatabaseCommand CreateCommandFor( string sqlQuery ) { + return CreateCommandFor( new SqlQuery( sqlQuery ) ); + } + + public IDatabaseCommand CreateCommandFor( IQuery query ) { + IDbCommand command = _connection.CreateCommand( ); + query.Prepare( command ); + return new DatabaseCommand( command ); + } + + public void Dispose() { + Dispose( true ); + GC.SuppressFinalize( this ); + } + + protected virtual void Dispose( bool disposing ) { + if ( disposing ) { + _connection.Close( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseConnectionFactory.cs b/slips/src/app/Marina/DataAccess/DatabaseConnectionFactory.cs new file mode 100644 index 0000000..2747148 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseConnectionFactory.cs @@ -0,0 +1,7 @@ +namespace Marina.DataAccess { + public class DatabaseConnectionFactory : IDatabaseConnectionFactory { + public IDatabaseConnection Create() { + return new DatabaseConnection( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseGateway.cs b/slips/src/app/Marina/DataAccess/DatabaseGateway.cs new file mode 100644 index 0000000..92892f1 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseGateway.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.Data; +using Marina.DataAccess.Builders; +using Marina.Infrastructure; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess { + public class DatabaseGateway : IDatabaseGateway { + private readonly IDatabaseConnectionFactory _connectionFactory; + + public DatabaseGateway() : this( Resolve.DependencyFor< IDatabaseConnectionFactory >( ) ) {} + + public DatabaseGateway( IDatabaseConnectionFactory connectionFactory ) { + _connectionFactory = connectionFactory; + } + + public DataTable LoadTableUsing( string sqlQuery ) { + using ( IDatabaseConnection connection = _connectionFactory.Create( ) ) { + IDatabaseCommand command = connection.CreateCommandFor( sqlQuery ); + return ( null != command ) ? command.ExecuteQuery( ) : null; + } + } + + public IEnumerable< IDatabaseRow > FindAllRowsMatching( IQuery query ) { + using ( IDatabaseConnection connection = _connectionFactory.Create( ) ) { + DataTable table = connection.CreateCommandFor( query ).ExecuteQuery( ); + if ( null != table ) { + foreach ( DataRow row in table.Rows ) { + yield return new DatabaseRow( row ); + } + } + } + } + + public void Execute( params IQuery[] queries ) { + Execute( ListFactory.From( queries ) ); + } + + public void Execute( IEnumerable< IQuery > queries ) { + using ( IDatabaseConnection connection = _connectionFactory.Create( ) ) { + foreach ( IQuery query in queries ) { + connection.CreateCommandFor( query ).ExecuteQuery( ); + } + } + } + + public long ExecuteScalar( IQuery query ) { + using ( IDatabaseConnection connection = _connectionFactory.Create( ) ) { + return connection.CreateCommandFor( query ).ExecuteScalarQuery( ); + } + } + + public IDatabaseRow LoadRowUsing( IQuery query ) { + using ( IDatabaseConnection connection = _connectionFactory.Create( ) ) { + DataTable table = connection.CreateCommandFor( query ).ExecuteQuery( ); + return table.Rows.Count > 0 ? new DatabaseRow( table.Rows[ 0 ] ) : DatabaseRow.Blank; + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseProviderFactory.cs b/slips/src/app/Marina/DataAccess/DatabaseProviderFactory.cs new file mode 100644 index 0000000..f93d964 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseProviderFactory.cs @@ -0,0 +1,10 @@ +using System.Data; +using System.Data.Common; + +namespace Marina.DataAccess { + public class DatabaseProviderFactory : IDatabaseProviderFactory { + public IDbConnection CreateConnectionFor( string providerName ) { + return DbProviderFactories.GetFactory( providerName ).CreateConnection( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseRow.cs b/slips/src/app/Marina/DataAccess/DatabaseRow.cs new file mode 100644 index 0000000..53d0b45 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseRow.cs @@ -0,0 +1,24 @@ +using System; +using System.Data; + +namespace Marina.DataAccess { + public class DatabaseRow : IDatabaseRow { + public DatabaseRow( DataRow row ) { + _row = row; + } + + public static readonly IDatabaseRow Blank = new BlankDatabaseRow( ); + + public T From< T >( DatabaseColumn column ) { + return ( T )Convert.ChangeType( _row[ column.ColumnName ], typeof( T ) ); + } + + private readonly DataRow _row; + + public class BlankDatabaseRow : IDatabaseRow { + public T From< T >( DatabaseColumn column ) { + return default( T ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/DatabaseTransaction.cs b/slips/src/app/Marina/DataAccess/DatabaseTransaction.cs new file mode 100644 index 0000000..78d87cf --- /dev/null +++ b/slips/src/app/Marina/DataAccess/DatabaseTransaction.cs @@ -0,0 +1,19 @@ +using System.Transactions; + +namespace Marina.DataAccess { + internal class DatabaseTransaction : IDatabaseTransaction { + public DatabaseTransaction() { + _scope = new TransactionScope( ); + } + + public void Commit() { + _scope.Complete( ); + } + + public void Dispose() { + _scope.Dispose( ); + } + + private readonly TransactionScope _scope; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Exceptions/ObjectAlreadyAddedToIdentityMapException.cs b/slips/src/app/Marina/DataAccess/Exceptions/ObjectAlreadyAddedToIdentityMapException.cs new file mode 100644 index 0000000..a2cf8c9 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Exceptions/ObjectAlreadyAddedToIdentityMapException.cs @@ -0,0 +1,9 @@ +using System; +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess.Exceptions { + public class ObjectAlreadyAddedToIdentityMapException : Exception { + public ObjectAlreadyAddedToIdentityMapException( IDomainObject domainObject ) + : base( "With ID Of: " + domainObject.ID( ) ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseCommand.cs b/slips/src/app/Marina/DataAccess/IDatabaseCommand.cs new file mode 100644 index 0000000..ef6fbd4 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseCommand.cs @@ -0,0 +1,9 @@ +using System.Data; + +namespace Marina.DataAccess { + public interface IDatabaseCommand { + DataTable ExecuteQuery(); + + long ExecuteScalarQuery(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseConfiguration.cs b/slips/src/app/Marina/DataAccess/IDatabaseConfiguration.cs new file mode 100644 index 0000000..2fb0637 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseConfiguration.cs @@ -0,0 +1,7 @@ +namespace Marina.DataAccess { + public interface IDatabaseConfiguration { + string ConnectionString(); + + string ProviderName(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseConnection.cs b/slips/src/app/Marina/DataAccess/IDatabaseConnection.cs new file mode 100644 index 0000000..2316741 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseConnection.cs @@ -0,0 +1,10 @@ +using System; +using Marina.DataAccess.Builders; + +namespace Marina.DataAccess { + public interface IDatabaseConnection : IDisposable { + IDatabaseCommand CreateCommandFor( string sqlQuery ); + + IDatabaseCommand CreateCommandFor( IQuery query ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseConnectionFactory.cs b/slips/src/app/Marina/DataAccess/IDatabaseConnectionFactory.cs new file mode 100644 index 0000000..4672c9a --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseConnectionFactory.cs @@ -0,0 +1,5 @@ +namespace Marina.DataAccess { + public interface IDatabaseConnectionFactory { + IDatabaseConnection Create(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseGateway.cs b/slips/src/app/Marina/DataAccess/IDatabaseGateway.cs new file mode 100644 index 0000000..f52ea21 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseGateway.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.Data; +using Marina.DataAccess.Builders; + +namespace Marina.DataAccess { + public interface IDatabaseGateway { + DataTable LoadTableUsing( string sqlQuery ); + + IEnumerable< IDatabaseRow > FindAllRowsMatching( IQuery query ); + + void Execute( params IQuery[] queries ); + + void Execute( IEnumerable< IQuery > queries ); + + long ExecuteScalar( IQuery query ); + + IDatabaseRow LoadRowUsing( IQuery query ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseProviderFactory.cs b/slips/src/app/Marina/DataAccess/IDatabaseProviderFactory.cs new file mode 100644 index 0000000..2fbb6b8 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseProviderFactory.cs @@ -0,0 +1,7 @@ +using System.Data; + +namespace Marina.DataAccess { + public interface IDatabaseProviderFactory { + IDbConnection CreateConnectionFor( string providerName ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseRow.cs b/slips/src/app/Marina/DataAccess/IDatabaseRow.cs new file mode 100644 index 0000000..baa07ee --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseRow.cs @@ -0,0 +1,5 @@ +namespace Marina.DataAccess { + public interface IDatabaseRow { + T From< T >( DatabaseColumn column ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IDatabaseTransaction.cs b/slips/src/app/Marina/DataAccess/IDatabaseTransaction.cs new file mode 100644 index 0000000..22d83a6 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IDatabaseTransaction.cs @@ -0,0 +1,7 @@ +using System; + +namespace Marina.DataAccess { + internal interface IDatabaseTransaction : IDisposable { + void Commit(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IIdentityMap.cs b/slips/src/app/Marina/DataAccess/IIdentityMap.cs new file mode 100644 index 0000000..28ad56e --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IIdentityMap.cs @@ -0,0 +1,9 @@ +namespace Marina.DataAccess { + public interface IIdentityMap< T > { + void Add( T domainObject ); + + bool ContainsObjectWithIdOf( long idOfObjectToFind ); + + T FindObjectWithIdOf( long idOfObjectToFind ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/IdentityMap.cs b/slips/src/app/Marina/DataAccess/IdentityMap.cs new file mode 100644 index 0000000..c251379 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/IdentityMap.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using Marina.DataAccess.Exceptions; +using Marina.Domain.Interfaces; + +namespace Marina.DataAccess { + public class IdentityMap< T > : IIdentityMap< T > where T : IDomainObject { + public IdentityMap() { + _items = new List< T >( ); + } + + public void Add( T domainObject ) { + EnsureObjectHasNotAlreadyBeenAdded( domainObject ); + _items.Add( domainObject ); + } + + public bool ContainsObjectWithIdOf( long idOfObjectToFind ) { + foreach ( T item in _items ) { + if ( item.ID( ).Equals( idOfObjectToFind ) ) { + return true; + } + } + return false; + } + + public T FindObjectWithIdOf( long idOfObjectToFind ) { + foreach ( T item in _items ) { + if ( item.ID( ).Equals( idOfObjectToFind ) ) { + return item; + } + } + return default( T ); + } + + private void EnsureObjectHasNotAlreadyBeenAdded( T domainObject ) { + if ( ContainsObjectWithIdOf( domainObject.ID( ) ) ) { + throw new ObjectAlreadyAddedToIdentityMapException( domainObject ); + } + } + + private readonly IList< T > _items; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Repositories/CustomerRepository.cs b/slips/src/app/Marina/DataAccess/Repositories/CustomerRepository.cs new file mode 100644 index 0000000..ade3e83 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Repositories/CustomerRepository.cs @@ -0,0 +1,51 @@ +using Marina.DataAccess.DataMappers; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.Repositories { + public class CustomerRepository : ICustomerRepository { + public CustomerRepository() + : this( new IdentityMap< ICustomer >( ), Resolve.DependencyFor< ICustomerDataMapper >( ) ) {} + + public CustomerRepository( IIdentityMap< ICustomer > identityMap, ICustomerDataMapper mapper ) { + _identityMap = identityMap; + _mapper = mapper; + } + + public ICustomer FindBy( long customerId ) { + if ( _identityMap.ContainsObjectWithIdOf( customerId ) ) { + return _identityMap.FindObjectWithIdOf( customerId ); + } + return FindCustomerBy( customerId ); + } + + public ICustomer FindBy( string username ) { + return _mapper.FindBy( username ); + } + + public void Save( ICustomer customer ) { + if ( _identityMap.ContainsObjectWithIdOf( customer.ID( ) ) ) { + _mapper.Update( customer ); + } + else { + _mapper.Insert( customer ); + _identityMap.Add( customer ); + } + } + + public ICustomer NewCustomer() { + return new Customer( ); + } + + private ICustomer FindCustomerBy( long customerId ) { + ICustomer customer = _mapper.FindBy( customerId ); + _identityMap.Add( customer ); + return customer; + } + + private readonly IIdentityMap< ICustomer > _identityMap; + private readonly ICustomerDataMapper _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Repositories/DockRepository.cs b/slips/src/app/Marina/DataAccess/Repositories/DockRepository.cs new file mode 100644 index 0000000..747ebc2 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Repositories/DockRepository.cs @@ -0,0 +1,20 @@ +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.Repositories { + public class DockRepository : IDockRepository { + public DockRepository() : this( Resolve.DependencyFor< IDockDataMapper >( ) ) {} + + public DockRepository( IDockDataMapper mapper ) { + this.mapper = mapper; + } + + public IDock FindBy( long dockId ) { + return mapper.FindBy( dockId ); + } + + private readonly IDockDataMapper mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Repositories/SlipsRepository.cs b/slips/src/app/Marina/DataAccess/Repositories/SlipsRepository.cs new file mode 100644 index 0000000..c6f0b3a --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Repositories/SlipsRepository.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Infrastructure.Container; + +namespace Marina.DataAccess.Repositories { + public class SlipsRepository : ISlipsRepository { + public SlipsRepository() : this( Resolve.DependencyFor< ISlipDataMapper >( ) ) {} + + public SlipsRepository( ISlipDataMapper mapper ) { + this.mapper = mapper; + } + + public IEnumerable< ISlip > AllAvailableSlips() { + return mapper.AllSlips( ).Where( Is.NotLeased( ) ); + } + + public IEnumerable< ISlip > AllAvailableSlipsFor( IDock dock ) { + return mapper.AllSlips( ).Where( Is.NotLeased( ).And( Is.OnDock( dock ) ) ); + } + + public ISlip FindBy( long slipId ) { + return mapper.FindBy( slipId ); + } + + private readonly ISlipDataMapper mapper; + + private static class Is { + public static ISpecificationBuilder< ISlip > NotLeased() { + return new SpecificationBuilder< ISlip >( new IsNotLeased( ) ); + } + + public static ISpecificationBuilder< ISlip > OnDock( IDock dock ) { + return new SpecificationBuilder< ISlip >( new OnDockSpecification( dock ) ); + } + + private class IsNotLeased : ISpecification< ISlip > { + public bool IsSatisfiedBy( ISlip slip ) { + return !slip.IsLeased( ); + } + } + + private class OnDockSpecification : ISpecification< ISlip > { + private readonly IDock _dock; + + public OnDockSpecification( IDock dock ) { + _dock = dock; + } + + public bool IsSatisfiedBy( ISlip item ) { + return _dock.ID( ).Equals( item.Dock( ).ID( ) ); + } + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/AuthorizationTable.cs b/slips/src/app/Marina/DataAccess/Schemas/AuthorizationTable.cs new file mode 100644 index 0000000..73be973 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/AuthorizationTable.cs @@ -0,0 +1,9 @@ +namespace Marina.DataAccess.Schemas { + public static class AuthorizationTable { + public const string TableName = "Authorize"; + public static readonly DatabaseColumn AuthID = new DatabaseColumn( TableName, "AuthID" ); + public static readonly DatabaseColumn UserName = new DatabaseColumn( TableName, "UserName" ); + public static readonly DatabaseColumn Password = new DatabaseColumn( TableName, "Password" ); + public static readonly DatabaseColumn CustomerID = new DatabaseColumn( TableName, "CustomerID" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/BoatTable.cs b/slips/src/app/Marina/DataAccess/Schemas/BoatTable.cs new file mode 100644 index 0000000..3d4fe6b --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/BoatTable.cs @@ -0,0 +1,11 @@ +namespace Marina.DataAccess.Schemas { + public static class BoatTable { + public const string TableName = "Boat"; + public static readonly DatabaseColumn BoatID = new DatabaseColumn( TableName, "BoatID" ); + public static readonly DatabaseColumn RegistrationNumber = new DatabaseColumn( TableName, "RegistrationNumber" ); + public static readonly DatabaseColumn Manufacturer = new DatabaseColumn( TableName, "Manufacturer" ); + public static readonly DatabaseColumn ModelYear = new DatabaseColumn( TableName, "ModelYear" ); + public static readonly DatabaseColumn Length = new DatabaseColumn( TableName, "Length" ); + public static readonly DatabaseColumn CustomerID = new DatabaseColumn( TableName, "CustomerID" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/CustomerTable.cs b/slips/src/app/Marina/DataAccess/Schemas/CustomerTable.cs new file mode 100644 index 0000000..b719a75 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/CustomerTable.cs @@ -0,0 +1,10 @@ +namespace Marina.DataAccess.Schemas { + public static class CustomerTable { + public const string TableName = "Customer"; + public static readonly DatabaseColumn CustomerID = new DatabaseColumn( TableName, "CustomerID" ); + public static readonly DatabaseColumn FirstName = new DatabaseColumn( TableName, "FirstName" ); + public static readonly DatabaseColumn LastName = new DatabaseColumn( TableName, "LastName" ); + public static readonly DatabaseColumn Phone = new DatabaseColumn( TableName, "Phone" ); + public static readonly DatabaseColumn City = new DatabaseColumn( TableName, "City" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/DockTable.cs b/slips/src/app/Marina/DataAccess/Schemas/DockTable.cs new file mode 100644 index 0000000..1350e82 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/DockTable.cs @@ -0,0 +1,10 @@ +namespace Marina.DataAccess.Schemas { + public static class DockTable { + public const string TableName = "Dock"; + public static readonly DatabaseColumn DockID = new DatabaseColumn( TableName, "DockID" ); + public static readonly DatabaseColumn DockName = new DatabaseColumn( TableName, "DockName" ); + public static readonly DatabaseColumn LocationId = new DatabaseColumn( TableName, "LocationId" ); + public static readonly DatabaseColumn WaterService = new DatabaseColumn( TableName, "WaterService" ); + public static readonly DatabaseColumn ElectricalService = new DatabaseColumn( TableName, "ElectricalService" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/LeaseTable.cs b/slips/src/app/Marina/DataAccess/Schemas/LeaseTable.cs new file mode 100644 index 0000000..2581372 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/LeaseTable.cs @@ -0,0 +1,11 @@ +namespace Marina.DataAccess.Schemas { + public static class LeaseTable { + public const string TableName = "Lease"; + public static readonly DatabaseColumn ID = new DatabaseColumn( TableName, "LeaseID" ); + public static readonly DatabaseColumn StartDate = new DatabaseColumn( TableName, "StartDate" ); + public static readonly DatabaseColumn EndDate = new DatabaseColumn( TableName, "EndDate" ); + public static readonly DatabaseColumn SlipID = new DatabaseColumn( TableName, "SlipID" ); + public static readonly DatabaseColumn CustomerID = new DatabaseColumn( TableName, "CustomerID" ); + public static readonly DatabaseColumn LeaseTypeID = new DatabaseColumn( TableName, "LeaseTypeID" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/LeaseType.cs b/slips/src/app/Marina/DataAccess/Schemas/LeaseType.cs new file mode 100644 index 0000000..c36cae9 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/LeaseType.cs @@ -0,0 +1,8 @@ +namespace Marina.DataAccess.Schemas { + public static class LeaseType { + public const string TableName = "LeaseType"; + public static readonly DatabaseColumn LeaseTypeID = new DatabaseColumn( TableName, "LeaseTypeID" ); + public static readonly DatabaseColumn LeaseTypeName = new DatabaseColumn( TableName, "LeaseTypeName" ); + public static readonly DatabaseColumn StandardRateAmount = new DatabaseColumn( TableName, "StandardRateAmount" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/LocationTable.cs b/slips/src/app/Marina/DataAccess/Schemas/LocationTable.cs new file mode 100644 index 0000000..eadee0b --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/LocationTable.cs @@ -0,0 +1,7 @@ +namespace Marina.DataAccess.Schemas { + public class LocationTable { + public const string TableName = "Location"; + public static readonly DatabaseColumn ID = new DatabaseColumn( TableName, "LocationId" ); + public static readonly DatabaseColumn Name = new DatabaseColumn( TableName, "LocationName" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/DataAccess/Schemas/SlipTable.cs b/slips/src/app/Marina/DataAccess/Schemas/SlipTable.cs new file mode 100644 index 0000000..fd69733 --- /dev/null +++ b/slips/src/app/Marina/DataAccess/Schemas/SlipTable.cs @@ -0,0 +1,9 @@ +namespace Marina.DataAccess.Schemas { + public static class SlipTable { + public const string TableName = "Slip"; + public static readonly DatabaseColumn ID = new DatabaseColumn( TableName, "SlipID" ); + public static readonly DatabaseColumn Width = new DatabaseColumn( TableName, "SlipWidth" ); + public static readonly DatabaseColumn Length = new DatabaseColumn( TableName, "SlipLength" ); + public static readonly DatabaseColumn DockID = new DatabaseColumn( TableName, "DockID" ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Boat.cs b/slips/src/app/Marina/Domain/Boat.cs new file mode 100644 index 0000000..3f07174 --- /dev/null +++ b/slips/src/app/Marina/Domain/Boat.cs @@ -0,0 +1,72 @@ +using System; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Boat : DomainObject, IBoat, IEquatable< Boat > { + public Boat( string registrationNumber, string manufacturer, DateTime yearOfModel, long length ) + : this( -1, registrationNumber, manufacturer, yearOfModel, length ) {} + + public Boat( long id, string registrationNumber, string manufacturer, DateTime yearOfModel, long length ) + : base( id ) { + _registrationNumber = registrationNumber; + _manufacturer = manufacturer; + _yearOfModel = yearOfModel; + _length = length; + } + + public string RegistrationNumber() { + return _registrationNumber; + } + + public string Manufacturer() { + return _manufacturer; + } + + public DateTime YearOfModel() { + return _yearOfModel; + } + + public long LengthInFeet() { + return _length; + } + + public bool Equals( Boat boat ) { + if ( boat == null ) { + return false; + } + if ( !Equals( _registrationNumber, boat._registrationNumber ) ) { + return false; + } + if ( !Equals( _manufacturer, boat._manufacturer ) ) { + return false; + } + if ( !Equals( _yearOfModel, boat._yearOfModel ) ) { + return false; + } + if ( _length != boat._length ) { + return false; + } + return true; + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as Boat ); + } + + public override int GetHashCode() { + int result = _registrationNumber != null ? _registrationNumber.GetHashCode( ) : 0; + result = 29*result + ( _manufacturer != null ? _manufacturer.GetHashCode( ) : 0 ); + result = 29*result + _yearOfModel.GetHashCode( ); + result = 29*result + ( int )_length; + return result; + } + + private readonly string _registrationNumber; + private readonly string _manufacturer; + private readonly DateTime _yearOfModel; + private readonly long _length; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/BrokenRule.cs b/slips/src/app/Marina/Domain/BrokenRule.cs new file mode 100644 index 0000000..1d7d56b --- /dev/null +++ b/slips/src/app/Marina/Domain/BrokenRule.cs @@ -0,0 +1,15 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + internal class BrokenRule : IBrokenRule { + public BrokenRule( string message ) { + _message = message; + } + + public string Message() { + return _message; + } + + private readonly string _message; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Customer.cs b/slips/src/app/Marina/Domain/Customer.cs new file mode 100644 index 0000000..8b9911c --- /dev/null +++ b/slips/src/app/Marina/Domain/Customer.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; + +namespace Marina.Domain { + public class Customer : DomainObject, ICustomer { + public Customer() + : this( -1, new RichList< IBoat >( ), new RichList< ISlipLease >( ), CustomerRegistration.BlankRegistration( ) ) {} + + public Customer( long id, IEnumerable< IBoat > registeredBoats, IEnumerable< ISlipLease > leases, + IRegistration registration ) : base( id ) { + _registeredBoats = ListFactory.From( registeredBoats ); + _leases = ListFactory.From( leases ); + _registration = registration; + } + + public IRegistration Registration() { + return _registration; + } + + public void RegisterAccount( string username, string password, string firstName, string lastName, string phoneNumber, + string city ) { + _registration = new CustomerRegistration( username, password, firstName, lastName, phoneNumber, city ); + } + + public void UpdateRegistrationTo( string username, string password, string firstName, string lastName, + string phoneNumber, + string city ) { + UpdateRegistrationTo( new CustomerRegistration( username, password, firstName, lastName, phoneNumber, city ) ); + } + + public void UpdateRegistrationTo( IRegistration registration ) { + _registration = registration ?? _registration; + } + + public void RegisterBoat( string registrationNumber, string manufacturer, DateTime yearOfModel, long length ) { + RegisterBoat( new Boat( registrationNumber, manufacturer, yearOfModel, length ) ); + } + + public void RegisterBoat( IBoat unregisteredBoat ) { + if ( !IsBoatRegistered( unregisteredBoat ) ) { + _registeredBoats.Add( unregisteredBoat ); + } + } + + public IEnumerable< IBoat > RegisteredBoats() { + return _registeredBoats.All( ); + } + + public void Lease( ISlip slip, ILeaseDuration duration ) { + EnsureSlipIsNotLeased( slip ); + _leases.Add( slip.LeaseTo( this, duration ) ); + } + + public IEnumerable< ISlipLease > Leases() { + return _leases.All( ); + } + + private void EnsureSlipIsNotLeased( ISlip slip ) { + if ( slip.IsLeased( ) ) { + throw new SlipIsAlreadyLeasedException( ); + } + } + + private bool IsBoatRegistered( IBoat boat ) { + return _registeredBoats.Contains( boat ); + } + + private readonly IRichList< IBoat > _registeredBoats; + private readonly IRichList< ISlipLease > _leases; + private IRegistration _registration; + public static readonly ICustomer Unknown = new UnknownCustomer( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/CustomerRegistration.cs b/slips/src/app/Marina/Domain/CustomerRegistration.cs new file mode 100644 index 0000000..9e7b13b --- /dev/null +++ b/slips/src/app/Marina/Domain/CustomerRegistration.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class CustomerRegistration : IRegistration, IEquatable< CustomerRegistration > { + private CustomerRegistration() + : this( string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty ) {} + + public CustomerRegistration( string userName, string password, string firstName, string lastName, string phoneNumber, + string city ) { + _userName = userName; + _password = password; + _firstName = firstName; + _lastName = lastName; + _phoneNumber = phoneNumber; + _city = city; + } + + public string Username() { + return _userName; + } + + public string Password() { + return _password; + } + + public string FirstName() { + return _firstName; + } + + public string LastName() { + return _lastName; + } + + public string PhoneNumber() { + return _phoneNumber; + } + + public string City() { + return _city; + } + + public bool IsValid() { + foreach ( IBusinessRule businessRule in AllRules( ) ) { + if ( !businessRule.IsBroken( ) ) { + return false; + } + } + return true; + } + + public IEnumerable< IBrokenRule > BrokenRules() { + foreach ( IBusinessRule businessRule in AllRules( ) ) { + if ( !businessRule.IsBroken( ) ) { + yield return businessRule.Description( ); + } + } + } + + private IEnumerable< IBusinessRule > AllRules() { + yield return new PasswordRule( _password ); + yield return new UserNameRule( _userName ); + } + + public bool Equals( CustomerRegistration customerRegistration ) { + if ( customerRegistration == null ) { + return false; + } + if ( !Equals( _userName, customerRegistration._userName ) ) { + return false; + } + if ( !Equals( _password, customerRegistration._password ) ) { + return false; + } + if ( !Equals( _firstName, customerRegistration._firstName ) ) { + return false; + } + if ( !Equals( _lastName, customerRegistration._lastName ) ) { + return false; + } + if ( !Equals( _phoneNumber, customerRegistration._phoneNumber ) ) { + return false; + } + if ( !Equals( _city, customerRegistration._city ) ) { + return false; + } + return true; + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as CustomerRegistration ); + } + + public override int GetHashCode() { + int result = _userName != null ? _userName.GetHashCode( ) : 0; + result = 29*result + ( _password != null ? _password.GetHashCode( ) : 0 ); + result = 29*result + ( _firstName != null ? _firstName.GetHashCode( ) : 0 ); + result = 29*result + ( _lastName != null ? _lastName.GetHashCode( ) : 0 ); + result = 29*result + ( _phoneNumber != null ? _phoneNumber.GetHashCode( ) : 0 ); + result = 29*result + ( _city != null ? _city.GetHashCode( ) : 0 ); + return result; + } + + private readonly string _userName; + private readonly string _password; + private readonly string _firstName; + private readonly string _lastName; + private readonly string _phoneNumber; + private readonly string _city; + + private class PasswordRule : IBusinessRule { + private readonly string _password; + + public PasswordRule( string password ) { + _password = password; + } + + public bool IsBroken() { + return !string.IsNullOrEmpty( _password ); + } + + public IBrokenRule Description() { + return new BrokenRule( "Password cannot be blank" ); + } + } + + private class UserNameRule : IBusinessRule { + private readonly string _userName; + + public UserNameRule( string userName ) { + _userName = userName; + } + + public bool IsBroken() { + return !string.IsNullOrEmpty( _userName ); + } + + public IBrokenRule Description() { + return new BrokenRule( "Username cannot be blank" ); + } + } + + public static IRegistration BlankRegistration() { + return new CustomerRegistration( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/DateRange.cs b/slips/src/app/Marina/Domain/DateRange.cs new file mode 100644 index 0000000..7460489 --- /dev/null +++ b/slips/src/app/Marina/Domain/DateRange.cs @@ -0,0 +1,22 @@ +using System; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + internal class DateRange : IDateRange { + public DateRange( DateTime startDate, DateTime endDate ) { + _startDate = startDate; + _endDate = endDate; + } + + public DateTime Start() { + return _startDate; + } + + public DateTime End() { + return _endDate; + } + + private readonly DateTime _startDate; + private readonly DateTime _endDate; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Dock.cs b/slips/src/app/Marina/Domain/Dock.cs new file mode 100644 index 0000000..6900cec --- /dev/null +++ b/slips/src/app/Marina/Domain/Dock.cs @@ -0,0 +1,33 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Dock : IDock { + private readonly long _id; + private readonly string _name; + private readonly ILocation _location; + private readonly IUtility _utility; + + public Dock( long id, string name, ILocation location, IUtility utility ) { + _id = id; + _name = name; + _location = location; + _utility = utility; + } + + public long ID() { + return _id; + } + + public string Name() { + return _name; + } + + public ILocation Location() { + return _location; + } + + public bool IsUtilityEnabled( IUtility utility ) { + return _utility.IsEnabled( utility ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/DomainObject.cs b/slips/src/app/Marina/Domain/DomainObject.cs new file mode 100644 index 0000000..2fefda9 --- /dev/null +++ b/slips/src/app/Marina/Domain/DomainObject.cs @@ -0,0 +1,19 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class DomainObject : IDomainObject { + private long _id; + + public DomainObject( long id ) { + _id = id; + } + + public long ID() { + return _id; + } + + void IDomainObject.ChangeIdTo( long id ) { + _id = id; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Exceptions/SlipIsAlreadyLeasedException.cs b/slips/src/app/Marina/Domain/Exceptions/SlipIsAlreadyLeasedException.cs new file mode 100644 index 0000000..be492b7 --- /dev/null +++ b/slips/src/app/Marina/Domain/Exceptions/SlipIsAlreadyLeasedException.cs @@ -0,0 +1,5 @@ +using System; + +namespace Marina.Domain.Exceptions { + public class SlipIsAlreadyLeasedException : Exception {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IBoat.cs b/slips/src/app/Marina/Domain/Interfaces/IBoat.cs new file mode 100644 index 0000000..1baf363 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IBoat.cs @@ -0,0 +1,13 @@ +using System; + +namespace Marina.Domain.Interfaces { + public interface IBoat : IDomainObject { + string RegistrationNumber(); + + string Manufacturer(); + + DateTime YearOfModel(); + + long LengthInFeet(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IBrokenRule.cs b/slips/src/app/Marina/Domain/Interfaces/IBrokenRule.cs new file mode 100644 index 0000000..190dc0b --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IBrokenRule.cs @@ -0,0 +1,5 @@ +namespace Marina.Domain.Interfaces { + public interface IBrokenRule { + string Message(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IBusinessRule.cs b/slips/src/app/Marina/Domain/Interfaces/IBusinessRule.cs new file mode 100644 index 0000000..c0d3a79 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IBusinessRule.cs @@ -0,0 +1,9 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain.Interfaces { + internal interface IBusinessRule { + bool IsBroken(); + + IBrokenRule Description(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ICustomer.cs b/slips/src/app/Marina/Domain/Interfaces/ICustomer.cs new file mode 100644 index 0000000..677194c --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ICustomer.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +namespace Marina.Domain.Interfaces { + public interface ICustomer : IDomainObject { + void RegisterBoat( string registrationNumber, string manufacturer, DateTime yearOfModel, long length ); + + void RegisterBoat( IBoat unregisteredBoat ); + + IEnumerable< IBoat > RegisteredBoats(); + + void Lease( ISlip slip, ILeaseDuration duration ); + + IEnumerable< ISlipLease > Leases(); + + IRegistration Registration(); + + void RegisterAccount( string username, string password, string firstName, + string lastName, string phoneNumber, string city ); + + void UpdateRegistrationTo( IRegistration registration ); + + void UpdateRegistrationTo( string username, string password, string firstName, string lastName, + string phoneNumber, + string city ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IDateRange.cs b/slips/src/app/Marina/Domain/Interfaces/IDateRange.cs new file mode 100644 index 0000000..ec53b90 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IDateRange.cs @@ -0,0 +1,9 @@ +using System; + +namespace Marina.Domain.Interfaces { + public interface IDateRange { + DateTime Start(); + + DateTime End(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IDock.cs b/slips/src/app/Marina/Domain/Interfaces/IDock.cs new file mode 100644 index 0000000..add87fb --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IDock.cs @@ -0,0 +1,11 @@ +namespace Marina.Domain.Interfaces { + public interface IDock { + long ID(); + + string Name(); + + ILocation Location(); + + bool IsUtilityEnabled( IUtility utility ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IDomainObject.cs b/slips/src/app/Marina/Domain/Interfaces/IDomainObject.cs new file mode 100644 index 0000000..c8a2c17 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IDomainObject.cs @@ -0,0 +1,7 @@ +namespace Marina.Domain.Interfaces { + public interface IDomainObject { + long ID(); + + void ChangeIdTo( long id ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ILeaseDuration.cs b/slips/src/app/Marina/Domain/Interfaces/ILeaseDuration.cs new file mode 100644 index 0000000..402398d --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ILeaseDuration.cs @@ -0,0 +1,10 @@ +using System; +using Marina.Infrastructure; + +namespace Marina.Domain.Interfaces { + public interface ILeaseDuration : IDomainObject, ISpecification< IDateRange > { + DateTime CalculateExpiryDateFrom( DateTime startDate ); + + string Name(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ILeaseType.cs b/slips/src/app/Marina/Domain/Interfaces/ILeaseType.cs new file mode 100644 index 0000000..1fb50b9 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ILeaseType.cs @@ -0,0 +1,7 @@ +namespace Marina.Domain.Interfaces { + public interface ILeaseType { + string Name(); + + double Rate(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ILocation.cs b/slips/src/app/Marina/Domain/Interfaces/ILocation.cs new file mode 100644 index 0000000..2464e8c --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ILocation.cs @@ -0,0 +1,5 @@ +namespace Marina.Domain.Interfaces { + public interface ILocation { + string Name(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IRange.cs b/slips/src/app/Marina/Domain/Interfaces/IRange.cs new file mode 100644 index 0000000..e18cc33 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IRange.cs @@ -0,0 +1,11 @@ +using System; + +namespace Marina.Domain.Interfaces { + public interface IRange< T > where T : IComparable< T > { + T Start(); + + T End(); + + bool Contains( T value ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IRegistration.cs b/slips/src/app/Marina/Domain/Interfaces/IRegistration.cs new file mode 100644 index 0000000..de470c6 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IRegistration.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.Domain.Interfaces { + public interface IRegistration { + string Username(); + + string Password(); + + string FirstName(); + + string LastName(); + + string PhoneNumber(); + + string City(); + + bool IsValid(); + + IEnumerable< IBrokenRule > BrokenRules(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ISlip.cs b/slips/src/app/Marina/Domain/Interfaces/ISlip.cs new file mode 100644 index 0000000..8ae576c --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ISlip.cs @@ -0,0 +1,15 @@ +namespace Marina.Domain.Interfaces { + public interface ISlip : IDomainObject { + IDock Dock(); + + ILocation Location(); + + int Width(); + + int Length(); + + ISlipLease LeaseTo( ICustomer customer, ILeaseDuration duration ); + + bool IsLeased(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/ISlipLease.cs b/slips/src/app/Marina/Domain/Interfaces/ISlipLease.cs new file mode 100644 index 0000000..219fb27 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/ISlipLease.cs @@ -0,0 +1,13 @@ +using System; + +namespace Marina.Domain.Interfaces { + public interface ISlipLease { + ILeaseDuration Duration(); + + DateTime StartDate(); + + DateTime ExpiryDate(); + + ISlip Slip(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Interfaces/IUtility.cs b/slips/src/app/Marina/Domain/Interfaces/IUtility.cs new file mode 100644 index 0000000..77954d9 --- /dev/null +++ b/slips/src/app/Marina/Domain/Interfaces/IUtility.cs @@ -0,0 +1,5 @@ +namespace Marina.Domain.Interfaces { + public interface IUtility { + bool IsEnabled( IUtility utility ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/LeaseDurations.cs b/slips/src/app/Marina/Domain/LeaseDurations.cs new file mode 100644 index 0000000..e87e567 --- /dev/null +++ b/slips/src/app/Marina/Domain/LeaseDurations.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class LeaseDurations { + public static readonly ILeaseDuration Daily = new LeaseDuration( "Daily", 1, 1 ); + public static readonly ILeaseDuration Weekly = new LeaseDuration( "Weekly", 2, 7 ); + public static readonly ILeaseDuration Monthly = new LeaseDuration( "Monthly", 3, 30 ); + public static readonly ILeaseDuration Yearly = new LeaseDuration( "Yearly", 4, 365 ); + private static readonly ILeaseDuration NoDuration = new LeaseDuration( "No Duration", -1, 0 ); + private static readonly ILeaseDuration UnknownDuration = new LeaseDuration( "Unknown", -1, 0 ); + + private class LeaseDuration : DomainObject, ILeaseDuration { + private readonly int _days; + private readonly string _name; + + public LeaseDuration( string name, long id, int days ) : base( id ) { + _days = days; + _name = name; + } + + public DateTime CalculateExpiryDateFrom( DateTime startDate ) { + return startDate.AddDays( _days ).Date.AddHours( 11 ); + } + + public string Name() { + return _name; + } + + public bool IsSatisfiedBy( IDateRange range ) { + TimeSpan daysInRange = range.End( ).Subtract( range.Start( ) ); + return _days <= daysInRange.Days; + } + } + + public static ILeaseDuration FindFor( DateTime startDate, DateTime endDate ) { + foreach ( ILeaseDuration duration in AllDurations( ) ) { + if ( duration.IsSatisfiedBy( new DateRange( startDate, endDate ) ) ) { + return duration; + } + } + return NoDuration; + } + + private static IEnumerable< ILeaseDuration > AllDurations() { + yield return Yearly; + yield return Monthly; + yield return Weekly; + yield return Daily; + } + + public static ILeaseDuration FindBy( string duration ) { + foreach ( ILeaseDuration leaseDuration in AllDurations( ) ) { + if ( string.Compare( leaseDuration.Name( ), duration, true ) == 0 ) { + return leaseDuration; + } + } + return UnknownDuration; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Location.cs b/slips/src/app/Marina/Domain/Location.cs new file mode 100644 index 0000000..eb68748 --- /dev/null +++ b/slips/src/app/Marina/Domain/Location.cs @@ -0,0 +1,15 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Location : ILocation { + public Location( string name ) { + _name = name; + } + + public string Name() { + return _name; + } + + private readonly string _name; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Range.cs b/slips/src/app/Marina/Domain/Range.cs new file mode 100644 index 0000000..4b76b25 --- /dev/null +++ b/slips/src/app/Marina/Domain/Range.cs @@ -0,0 +1,32 @@ +using System; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Range< T > : IRange< T > where T : IComparable< T > { + private readonly T start; + private readonly T end; + + public Range( T start, T end ) { + if ( start.CompareTo( end ) <= 0 ) { + this.start = start; + this.end = end; + } + else { + this.start = end; + this.end = start; + } + } + + public T Start() { + return start; + } + + public T End() { + return end; + } + + public bool Contains( T value ) { + return value.CompareTo( start ) >= 0 && value.CompareTo( end ) <= 0; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Repositories/ICustomerRepository.cs b/slips/src/app/Marina/Domain/Repositories/ICustomerRepository.cs new file mode 100644 index 0000000..439bb12 --- /dev/null +++ b/slips/src/app/Marina/Domain/Repositories/ICustomerRepository.cs @@ -0,0 +1,13 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain.Repositories { + public interface ICustomerRepository { + ICustomer FindBy( long customerId ); + + ICustomer FindBy( string username ); + + void Save( ICustomer customer ); + + ICustomer NewCustomer(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Repositories/IDockRepository.cs b/slips/src/app/Marina/Domain/Repositories/IDockRepository.cs new file mode 100644 index 0000000..de9e51f --- /dev/null +++ b/slips/src/app/Marina/Domain/Repositories/IDockRepository.cs @@ -0,0 +1,7 @@ +using Marina.Domain.Interfaces; + +namespace Marina.Domain.Repositories { + public interface IDockRepository { + IDock FindBy( long dockId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Repositories/ISlipsRepository.cs b/slips/src/app/Marina/Domain/Repositories/ISlipsRepository.cs new file mode 100644 index 0000000..8a23ca6 --- /dev/null +++ b/slips/src/app/Marina/Domain/Repositories/ISlipsRepository.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.Domain.Repositories { + public interface ISlipsRepository { + IEnumerable< ISlip > AllAvailableSlips(); + + IEnumerable< ISlip > AllAvailableSlipsFor( IDock dock ); + + ISlip FindBy( long slipId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Slip.cs b/slips/src/app/Marina/Domain/Slip.cs new file mode 100644 index 0000000..6b8a9b7 --- /dev/null +++ b/slips/src/app/Marina/Domain/Slip.cs @@ -0,0 +1,46 @@ +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Slip : DomainObject, ISlip { + public Slip( long id, IDock dock, int width, int length, bool isLeased ) : base( id ) { + _dock = dock; + _width = width; + _length = length; + _isLeased = isLeased; + } + + public IDock Dock() { + return _dock; + } + + public ILocation Location() { + return _dock.Location( ); + } + + public int Width() { + return _width; + } + + public int Length() { + return _length; + } + + public ISlipLease LeaseTo( ICustomer customer, ILeaseDuration duration ) { + if ( !IsLeased( ) ) { + _isLeased = true; + return new SlipLease( this, duration ); + } + throw new SlipIsAlreadyLeasedException( ); + } + + public bool IsLeased() { + return _isLeased; + } + + private readonly IDock _dock; + private readonly int _width; + private readonly int _length; + private bool _isLeased; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/SlipLease.cs b/slips/src/app/Marina/Domain/SlipLease.cs new file mode 100644 index 0000000..297bbf0 --- /dev/null +++ b/slips/src/app/Marina/Domain/SlipLease.cs @@ -0,0 +1,37 @@ +using System; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class SlipLease : ISlipLease { + public SlipLease( ISlip slip, ILeaseDuration duration ) + : this( slip, duration, DateTime.Now.Date, duration.CalculateExpiryDateFrom( DateTime.Now.Date ) ) {} + + public SlipLease( ISlip slip, ILeaseDuration duration, DateTime startDate, DateTime expiryDate ) { + _slip = slip; + _duration = duration; + _startDate = startDate; + _expiryDate = expiryDate; + } + + public ILeaseDuration Duration() { + return _duration; + } + + public DateTime StartDate() { + return _startDate; + } + + public DateTime ExpiryDate() { + return _expiryDate; + } + + public ISlip Slip() { + return _slip; + } + + private readonly ILeaseDuration _duration; + private readonly DateTime _startDate; + private readonly DateTime _expiryDate; + private readonly ISlip _slip; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/UnknownCustomer.cs b/slips/src/app/Marina/Domain/UnknownCustomer.cs new file mode 100644 index 0000000..f79f4cc --- /dev/null +++ b/slips/src/app/Marina/Domain/UnknownCustomer.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class UnknownCustomer : ICustomer { + public void RegisterBoat( string registrationNumber, string manufacturer, DateTime yearOfModel, long length ) {} + + public void RegisterBoat( IBoat unregisteredBoat ) {} + + public IEnumerable< IBoat > RegisteredBoats() { + return new List< IBoat >( ); + } + + public void Lease( ISlip slip, ILeaseDuration duration ) {} + + public IEnumerable< ISlipLease > Leases() { + return new List< ISlipLease >( ); + } + + public IRegistration Registration() { + return CustomerRegistration.BlankRegistration( ); + } + + public void RegisterAccount( string username, string password, string firstName, string lastName, string phoneNumber, + string city ) {} + + public void UpdateRegistrationTo( IRegistration registration ) {} + + public void UpdateRegistrationTo( string username, string password, string firstName, string lastName, + string phoneNumber, string city ) {} + + public long ID() { + return -1; + } + + public void ChangeIdTo( long id ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Domain/Utilities.cs b/slips/src/app/Marina/Domain/Utilities.cs new file mode 100644 index 0000000..d318a86 --- /dev/null +++ b/slips/src/app/Marina/Domain/Utilities.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Marina.Domain.Interfaces; + +namespace Marina.Domain { + public class Utilities { + public static readonly IUtility Water = new Utility( "Water" ); + public static readonly IUtility Electrical = new Utility( "Electrical" ); + private static readonly IUtility None = new Utility( "None" ); + + public static IUtility For( params IUtility[] utilities ) { + if ( null != utilities && 0 < utilities.Length ) { + return new UtilityComposite( utilities ); + } + return None; + } + + private class Utility : IUtility, IEquatable< Utility > { + private readonly string _name; + + public Utility( string name ) { + _name = name; + } + + public bool IsEnabled( IUtility utility ) { + return Equals( utility ); + } + + public bool Equals( Utility utility ) { + if ( utility == null ) { + return false; + } + return Equals( _name, utility._name ); + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as Utility ); + } + + public override int GetHashCode() { + return _name.GetHashCode( ); + } + + public override string ToString() { + return _name; + } + } + + private class UtilityComposite : IUtility { + private readonly IEnumerable< IUtility > _utilities; + + public UtilityComposite( params IUtility[] utilities ) { + _utilities = new List< IUtility >( utilities ); + } + + public bool IsEnabled( IUtility utility ) { + return Equals( utility ); + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + foreach ( IUtility utility in _utilities ) { + if ( utility != null ) { + if ( utility.Equals( obj ) ) { + return true; + } + } + } + return false; + } + + public override int GetHashCode() { + return 0; + } + + public override string ToString() { + StringBuilder builder = new StringBuilder( ); + foreach ( IUtility utility in _utilities ) { + builder.Append( utility.ToString( ) ); + } + return builder.ToString( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/BlankCommand.cs b/slips/src/app/Marina/Infrastructure/BlankCommand.cs new file mode 100644 index 0000000..8fd0931 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/BlankCommand.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public class BlankCommand : ICommand { + public void Execute( ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItem.cs b/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItem.cs new file mode 100644 index 0000000..36f512d --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItem.cs @@ -0,0 +1,13 @@ +namespace Marina.Infrastructure.Configuration { + public class ConfigurationItem< T > { + private T item; + + public ConfigurationItem( T item ) { + this.item = item; + } + + public T Value( ) { + return item; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItems.cs b/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItems.cs new file mode 100644 index 0000000..9a7973b --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Configuration/ConfigurationItems.cs @@ -0,0 +1,15 @@ +using System.Configuration; +using System.Xml; + +namespace Marina.Infrastructure.Configuration { + public class ConfigurationItems { + public static readonly ConfigurationItem< XmlElement > Log4NetConfigFile = new ConfigurationItem< XmlElement >( + LoadLog4NetConfig( ) ); + + private static XmlElement LoadLog4NetConfig( ) { + XmlDocument document = new XmlDocument( ); + document.Load( ConfigurationManager.AppSettings[ "LogFileName" ] ); + return document.DocumentElement; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Container/Custom/CustomDependencyContainer.cs b/slips/src/app/Marina/Infrastructure/Container/Custom/CustomDependencyContainer.cs new file mode 100644 index 0000000..d37e452 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Container/Custom/CustomDependencyContainer.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +namespace Marina.Infrastructure.Container.Custom { + public class CustomDependencyContainer : IDependencyContainer { + private static IDictionary< Type, object > list; + + public CustomDependencyContainer( ) { + list = new Dictionary< Type, object >( ); + } + + public Interface GetMeAnImplementationOfAn< Interface >( ) { + Type currentType = typeof( Interface ); + return ( Interface )list[ currentType ]; + } + + public void AddImplementationOf< Interface >( Interface objectToRegister ) { + list.Add( typeof( Interface ), objectToRegister ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Container/IDependencyContainer.cs b/slips/src/app/Marina/Infrastructure/Container/IDependencyContainer.cs new file mode 100644 index 0000000..3533e23 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Container/IDependencyContainer.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure.Container { + public interface IDependencyContainer { + Interface GetMeAnImplementationOfAn< Interface >( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Container/InterfaceResolutionException.cs b/slips/src/app/Marina/Infrastructure/Container/InterfaceResolutionException.cs new file mode 100644 index 0000000..d42b550 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Container/InterfaceResolutionException.cs @@ -0,0 +1,11 @@ +using System; + +namespace Marina.Infrastructure.Container { + public class InterfaceResolutionException : Exception { + public const string ExceptionMessageFormat = "Failed to resolve an implementation of an {0}"; + + public InterfaceResolutionException( Exception innerException, Type interfaceThatCouldNotBeResolvedForSomeReason ) + : base( + string.Format( ExceptionMessageFormat, interfaceThatCouldNotBeResolvedForSomeReason.FullName ), innerException ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Container/Resolve.cs b/slips/src/app/Marina/Infrastructure/Container/Resolve.cs new file mode 100644 index 0000000..53e602b --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Container/Resolve.cs @@ -0,0 +1,21 @@ +using System; + +namespace Marina.Infrastructure.Container { + public class Resolve { + private static IDependencyContainer container; + + public static void InitializeWith( IDependencyContainer newContainer + ) { + container = newContainer; + } + + public static Interface DependencyFor< Interface >() { + try { + return container.GetMeAnImplementationOfAn< Interface >( ); + } + catch ( Exception e ) { + throw new InterfaceResolutionException( e, typeof( Interface ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Container/Windsor/WindsorDependencyContainer.cs b/slips/src/app/Marina/Infrastructure/Container/Windsor/WindsorDependencyContainer.cs new file mode 100644 index 0000000..c35c6ce --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Container/Windsor/WindsorDependencyContainer.cs @@ -0,0 +1,16 @@ +using Castle.Windsor; +using Castle.Windsor.Configuration.Interpreters; + +namespace Marina.Infrastructure.Container.Windsor { + public class WindsorDependencyContainer : IDependencyContainer { + private readonly IWindsorContainer _container; + + public WindsorDependencyContainer() { + _container = new WindsorContainer( new XmlInterpreter( @"windsor.config.xml" ) ); + } + + public Interface GetMeAnImplementationOfAn< Interface >() { + return _container.Resolve< Interface >( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/EnumerableMapper.cs b/slips/src/app/Marina/Infrastructure/EnumerableMapper.cs new file mode 100644 index 0000000..0ba9bca --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/EnumerableMapper.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace Marina.Infrastructure { + internal class EnumerableMapper< TIn, TOut > : IMapper< IEnumerable< TIn >, IEnumerable< TOut > > { + public EnumerableMapper( IMapper< TIn, TOut > mapper ) { + _mapper = mapper; + } + + public IEnumerable< TOut > MapFrom( IEnumerable< TIn > input ) { + foreach ( TIn item in input ) { + yield return _mapper.MapFrom( item ); + } + } + + private readonly IMapper< TIn, TOut > _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/ICommand.cs b/slips/src/app/Marina/Infrastructure/ICommand.cs new file mode 100644 index 0000000..cd98ab5 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/ICommand.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface ICommand { + void Execute( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IFactory.cs b/slips/src/app/Marina/Infrastructure/IFactory.cs new file mode 100644 index 0000000..0c835e0 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IFactory.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface IFactory< T > { + T Create( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IMapper.cs b/slips/src/app/Marina/Infrastructure/IMapper.cs new file mode 100644 index 0000000..784bc41 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IMapper.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface IMapper< TIn, TOut > { + TOut MapFrom( TIn input ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IRichEnumerable.cs b/slips/src/app/Marina/Infrastructure/IRichEnumerable.cs new file mode 100644 index 0000000..622bdf2 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IRichEnumerable.cs @@ -0,0 +1,7 @@ +using System.Collections.Generic; + +namespace Marina.Infrastructure { + public interface IRichEnumerable< T > : IEnumerable< T > { + IEnumerable< T > Where( ISpecification< T > criteriaToSatisfy ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IRichList.cs b/slips/src/app/Marina/Infrastructure/IRichList.cs new file mode 100644 index 0000000..3bac655 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IRichList.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace Marina.Infrastructure { + public interface IRichList< T > : IList< T > { + void AddRange( IEnumerable< T > collection ); + + ReadOnlyCollection< T > AsReadOnly(); + + int BinarySearch( int index, int count, T item, IComparer< T > comparer ); + + int BinarySearch( T item ); + + int BinarySearch( T item, IComparer< T > comparer ); + + IRichList< TOutput > ConvertAll< TOutput >( Converter< T, TOutput > converter ); + + void CopyTo( T[] array ); + + void CopyTo( int index, T[] array, int arrayIndex, int count ); + + bool Exists( Predicate< T > match ); + + T Find( Predicate< T > match ); + + IRichList< T > FindAll( Predicate< T > match ); + + int FindIndex( Predicate< T > match ); + + int FindIndex( int startIndex, Predicate< T > match ); + + int FindIndex( int startIndex, int count, Predicate< T > match ); + + T FindLast( Predicate< T > match ); + + int FindLastIndex( Predicate< T > match ); + + int FindLastIndex( int startIndex, Predicate< T > match ); + + int FindLastIndex( int startIndex, int count, Predicate< T > match ); + + void ForEach( Action< T > action ); + + IRichList< T > GetRange( int index, int count ); + + int IndexOf( T item, int index ); + + int IndexOf( T item, int index, int count ); + + void InsertRange( int index, IEnumerable< T > collection ); + + int LastIndexOf( T item ); + + int LastIndexOf( T item, int index ); + + int LastIndexOf( T item, int index, int count ); + + int RemoveAll( Predicate< T > match ); + + void RemoveRange( int index, int count ); + + void Reverse(); + + void Reverse( int index, int count ); + + void Sort(); + + void Sort( IComparer< T > comparer ); + + void Sort( int index, int count, IComparer< T > comparer ); + + void Sort( Comparison< T > comparison ); + + T[] ToArray(); + + void TrimExcess(); + + bool TrueForAll( Predicate< T > match ); + + int Capacity { get; set; } + + void VisitAllItemWith( IVisitor< T > visitor ); + + Result GetResultOfVisitingAllItemsWith< Result >( IValueReturningVisitor< Result, T > visitor ); + + IEnumerable< Output > MapAllUsing< Output >( IMapper< T, Output > mapper ); + + IEnumerable< T > All(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/ISpecification.cs b/slips/src/app/Marina/Infrastructure/ISpecification.cs new file mode 100644 index 0000000..852c66f --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/ISpecification.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface ISpecification< T > { + bool IsSatisfiedBy( T item ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/ISpecificationBuilder.cs b/slips/src/app/Marina/Infrastructure/ISpecificationBuilder.cs new file mode 100644 index 0000000..14089db --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/ISpecificationBuilder.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface ISpecificationBuilder< T > : ISpecification< T > { + ISpecificationBuilder< T > And( ISpecification< T > specification ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/ITransformer.cs b/slips/src/app/Marina/Infrastructure/ITransformer.cs new file mode 100644 index 0000000..4cbb54c --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/ITransformer.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface ITransformer { + Item To< Item >( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IValueReturningVisitor.cs b/slips/src/app/Marina/Infrastructure/IValueReturningVisitor.cs new file mode 100644 index 0000000..160b039 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IValueReturningVisitor.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface IValueReturningVisitor< ValueToReturn, T > : IVisitor< T > { + ValueToReturn GetResult( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/IVisitor.cs b/slips/src/app/Marina/Infrastructure/IVisitor.cs new file mode 100644 index 0000000..6c6e513 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/IVisitor.cs @@ -0,0 +1,5 @@ +namespace Marina.Infrastructure { + public interface IVisitor< T > { + void Visit( T item ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/ListFactory.cs b/slips/src/app/Marina/Infrastructure/ListFactory.cs new file mode 100644 index 0000000..0e19bcb --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/ListFactory.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; + +namespace Marina.Infrastructure { + public class ListFactory { + public static IRichList< T > From< T >( IEnumerable< T > items ) { + if ( items == null ) { + return new RichList< T >( ); + } + return new RichList< T >( items ); + } + + public static IEnumerable< T > For< T >( params T[] items ) { + IRichList< T > list = new RichList< T >( ); + foreach ( T item in items ) { + list.Add( item ); + } + return list; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILog.cs b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILog.cs new file mode 100644 index 0000000..37d91d8 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILog.cs @@ -0,0 +1,7 @@ +namespace Marina.Infrastructure.Logging.Interfaces { + public interface ILog { + void Informational( string message ); + void Informational( string messageFormat, params object[] args ); + void CriticalError( string messageFormat, params object[] args ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILogFactory.cs b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILogFactory.cs new file mode 100644 index 0000000..0c71caf --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/ILogFactory.cs @@ -0,0 +1,7 @@ +using System; + +namespace Marina.Infrastructure.Logging.Interfaces { + public interface ILogFactory { + ILog CreateFor( Type type ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Interfaces/Log.cs b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/Log.cs new file mode 100644 index 0000000..c8dae76 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Interfaces/Log.cs @@ -0,0 +1,14 @@ +using System; +using Marina.Infrastructure.Container; + +namespace Marina.Infrastructure.Logging.Interfaces { + public class Log { + public static ILog For( object itemThatRequiresLoggingServices ) { + return For( itemThatRequiresLoggingServices.GetType( ) ); + } + + public static ILog For( Type type ) { + return Resolve.DependencyFor< ILogFactory >( ).CreateFor( type ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Log4Net/ILog4NetInitializationCommand.cs b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/ILog4NetInitializationCommand.cs new file mode 100644 index 0000000..a688728 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/ILog4NetInitializationCommand.cs @@ -0,0 +1,8 @@ +using System.Xml; +using log4net.Config; + +namespace Marina.Infrastructure.Logging.Log4Net { + public interface ILog4NetInitializationCommand { + void Execute( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetInitializationCommand.cs b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetInitializationCommand.cs new file mode 100644 index 0000000..888a088 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetInitializationCommand.cs @@ -0,0 +1,19 @@ +using System.Xml; +using log4net.Config; +using Marina.Infrastructure.Configuration; + +namespace Marina.Infrastructure.Logging.Log4Net { + public class Log4NetInitializationCommand : ILog4NetInitializationCommand { + private readonly XmlElement configuration; + + public Log4NetInitializationCommand( ) : this( ConfigurationItems.Log4NetConfigFile.Value( ) ) {} + + public Log4NetInitializationCommand( XmlElement configuration ) { + this.configuration = configuration; + } + + public void Execute( ) { + XmlConfigurator.Configure( configuration ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLog.cs b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLog.cs new file mode 100644 index 0000000..a225f55 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLog.cs @@ -0,0 +1,23 @@ +using Marina.Infrastructure.Logging.Interfaces; + +namespace Marina.Infrastructure.Logging.Log4Net { + public class Log4NetLog : ILog { + private log4net.ILog logToAdapt; + + public Log4NetLog( log4net.ILog logToAdapt ) { + this.logToAdapt = logToAdapt; + } + + public void Informational( string message ) { + logToAdapt.Info( message ); + } + + public void Informational( string messageFormat, params object[] args ) { + logToAdapt.InfoFormat( messageFormat, args ); + } + + public void CriticalError( string messageFormat, params object[] args ) { + logToAdapt.ErrorFormat( messageFormat, args ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLogFactory.cs b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLogFactory.cs new file mode 100644 index 0000000..996557f --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/Log4Net/Log4NetLogFactory.cs @@ -0,0 +1,30 @@ +using System; +using log4net; +using Marina.Infrastructure.Logging.Interfaces; +using ILog=Marina.Infrastructure.Logging.Interfaces.ILog; + +namespace Marina.Infrastructure.Logging.Log4Net { + public class Log4NetLogFactory : ILogFactory { + private ILog4NetInitializationCommand initializationCommand; + private bool initialized; + + public Log4NetLogFactory( ) : this( new Log4NetInitializationCommand( ) ) {} + + public Log4NetLogFactory( ILog4NetInitializationCommand initializationCommand ) { + this.initializationCommand = initializationCommand; + } + + public ILog CreateFor( Type typeThatRequiresLoggingServices ) { + WireUpConfiguration( ); + return new Log4NetLog( LogManager.GetLogger( typeThatRequiresLoggingServices ) ); + } + + private void WireUpConfiguration( ) { + if ( initialized ) { + return; + } + initialized = true; + initializationCommand.Execute( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLog.cs b/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLog.cs new file mode 100644 index 0000000..858d0f7 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLog.cs @@ -0,0 +1,24 @@ +using System.IO; +using Marina.Infrastructure.Logging.Interfaces; + +namespace Marina.Infrastructure.Logging.TextWriterLogging { + public class TextWriterLog : ILog { + private readonly TextWriter _writer; + + public TextWriterLog( TextWriter writer ) { + _writer = writer; + } + + public void Informational( string message ) { + _writer.WriteLine( message ); + } + + public void Informational( string messageFormat, params object[] args ) { + _writer.WriteLine( messageFormat, args ); + } + + public void CriticalError( string messageFormat, params object[] args ) { + Informational( messageFormat, args ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactory.cs b/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactory.cs new file mode 100644 index 0000000..7a2b344 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactory.cs @@ -0,0 +1,10 @@ +using System; +using Marina.Infrastructure.Logging.Interfaces; + +namespace Marina.Infrastructure.Logging.TextWriterLogging { + public class TextWriterLogFactory : ILogFactory { + public ILog CreateFor( Type type ) { + return new TextWriterLog( Console.Out ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/RichEnumerable.cs b/slips/src/app/Marina/Infrastructure/RichEnumerable.cs new file mode 100644 index 0000000..aa5f49d --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/RichEnumerable.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Marina.Infrastructure { + public class RichEnumerable< T > : IRichEnumerable< T > { + private readonly IEnumerable< T > itemsToEnumerate; + + public RichEnumerable( IEnumerable< T > itemsToEnumerate ) { + this.itemsToEnumerate = itemsToEnumerate; + } + + public IEnumerable< T > Where( ISpecification< T > criteriaToSatisfy ) { + foreach ( T item in itemsToEnumerate ) { + if ( criteriaToSatisfy.IsSatisfiedBy( item ) ) { + yield return item; + } + } + } + + IEnumerator< T > IEnumerable< T >.GetEnumerator() { + return itemsToEnumerate.GetEnumerator( ); + } + + public IEnumerator GetEnumerator() { + return ( ( IEnumerable< T > )this ).GetEnumerator( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/RichList.cs b/slips/src/app/Marina/Infrastructure/RichList.cs new file mode 100644 index 0000000..ec6bfa0 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/RichList.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; + +namespace Marina.Infrastructure { + public class RichList< T > : List< T >, IRichList< T > { + public RichList( IEnumerable< T > collection ) + : base( collection ) {} + + public RichList( int capacity ) + : base( capacity ) {} + + public RichList() {} + + public IEnumerable< Output > MapAllUsing< Output >( IMapper< T, Output > mapper ) { + return ConvertAll< Output >( mapper.MapFrom ); + } + + public IEnumerable< T > All() { + foreach ( T t in this ) { + yield return t; + } + } + + public new IRichList< TOutput > ConvertAll< TOutput >( Converter< T, TOutput > converter ) { + return new RichList< TOutput >( base.ConvertAll( converter ) ); + } + + public new IRichList< T > FindAll( Predicate< T > match ) { + return new RichList< T >( base.FindAll( match ) ); + } + + public new IRichList< T > GetRange( int index, int count ) { + return new RichList< T >( base.GetRange( index, count ) ); + } + + public void VisitAllItemWith( IVisitor< T > visitor ) { + ForEach( visitor.Visit ); + } + + public Result GetResultOfVisitingAllItemsWith< Result >( IValueReturningVisitor< Result, T > visitor ) { + VisitAllItemWith( visitor ); + return visitor.GetResult( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/SpecificationBuilder.cs b/slips/src/app/Marina/Infrastructure/SpecificationBuilder.cs new file mode 100644 index 0000000..1651733 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/SpecificationBuilder.cs @@ -0,0 +1,44 @@ +namespace Marina.Infrastructure { + public class SpecificationBuilder< T > : ISpecificationBuilder< T > { + public SpecificationBuilder() : this( new BlankSpecification( ) ) {} + + public SpecificationBuilder( ISpecification< T > criteria ) { + _criteria = criteria; + } + + public bool IsSatisfiedBy( T item ) { + return _criteria.IsSatisfiedBy( item ); + } + + public ISpecificationBuilder< T > And( ISpecification< T > specification ) { + _criteria = new AndSpecification< T >( _criteria, specification ); + return this; + } + + public ISpecification< T > Build() { + return _criteria; + } + + public class BlankSpecification : ISpecification< T > { + public bool IsSatisfiedBy( T item ) { + return true; + } + } + + private ISpecification< T > _criteria; + + private class AndSpecification< K > : ISpecification< K > { + public AndSpecification( ISpecification< K > leftCriteria, ISpecification< K > rightCriteria ) { + this.leftCriteria = leftCriteria; + this.rightCriteria = rightCriteria; + } + + public bool IsSatisfiedBy( K item ) { + return leftCriteria.IsSatisfiedBy( item ) && rightCriteria.IsSatisfiedBy( item ); + } + + private readonly ISpecification< K > leftCriteria; + private readonly ISpecification< K > rightCriteria; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Transform.cs b/slips/src/app/Marina/Infrastructure/Transform.cs new file mode 100644 index 0000000..a47a9bc --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Transform.cs @@ -0,0 +1,7 @@ +namespace Marina.Infrastructure { + public class Transform { + public static ITransformer From( object item ) { + return new Transformer( item ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Infrastructure/Transformer.cs b/slips/src/app/Marina/Infrastructure/Transformer.cs new file mode 100644 index 0000000..bdd59c8 --- /dev/null +++ b/slips/src/app/Marina/Infrastructure/Transformer.cs @@ -0,0 +1,22 @@ +using System; + +namespace Marina.Infrastructure { + public class Transformer : ITransformer { + private object item; + + public Transformer( object item ) { + this.item = item; + } + + public Result To< Result >( ) { + EnsureItemIsNotNull( ); + return ( Result )item; + } + + private void EnsureItemIsNotNull( ) { + if ( item == null ) { + throw new NullReferenceException( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Marina.csproj b/slips/src/app/Marina/Marina.csproj new file mode 100644 index 0000000..9fc4466 --- /dev/null +++ b/slips/src/app/Marina/Marina.csproj @@ -0,0 +1,322 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A} + Library + Properties + Marina + Marina + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\..\build\lib\castle\bin\Castle.Core.dll + + + False + ..\..\..\build\lib\castle\bin\Castle.DynamicProxy.dll + + + False + ..\..\..\build\lib\castle\bin\Castle.MicroKernel.dll + + + False + ..\..\..\build\lib\castle\bin\Castle.Windsor.dll + + + False + ..\..\..\build\lib\log4net\bin\log4net.dll + + + + + 3.5 + + + + + + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/BoatRegistrationDTO.cs b/slips/src/app/Marina/Presentation/DTO/BoatRegistrationDTO.cs new file mode 100644 index 0000000..f34a70f --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/BoatRegistrationDTO.cs @@ -0,0 +1,41 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class BoatRegistrationDTO { + private readonly string registrationNumber; + private readonly string manufacturer; + private readonly string modelYear; + private readonly string length; + private readonly long customerId; + + public BoatRegistrationDTO( string registrationNumber, string manufacturer, string modelYear, string length, + long customerId ) { + this.registrationNumber = registrationNumber; + this.manufacturer = manufacturer; + this.modelYear = modelYear; + this.length = length; + this.customerId = customerId; + } + + public string RegistrationNumber { + get { return registrationNumber; } + } + + public string Manufacturer { + get { return manufacturer; } + } + + public string ModelYear { + get { return modelYear; } + } + + public string Length { + get { return length; } + } + + public long CustomerId { + get { return customerId; } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/CustomerRegistrationDisplayDTO.cs b/slips/src/app/Marina/Presentation/DTO/CustomerRegistrationDisplayDTO.cs new file mode 100644 index 0000000..3c517bf --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/CustomerRegistrationDisplayDTO.cs @@ -0,0 +1,91 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class CustomerRegistrationDisplayDTO : IEquatable< CustomerRegistrationDisplayDTO > { + private CustomerRegistrationDisplayDTO() {} + + public CustomerRegistrationDisplayDTO( string id, string userName, string firstName, string lastName, string phone, + string city ) { + _userName = userName; + _id = id; + _firstName = firstName; + _lastName = lastName; + _phone = phone; + _city = city; + } + + public string Id { + get { return _id; } + } + + public string UserName { + get { return _userName; } + } + + public string FirstName { + get { return _firstName; } + } + + public string LastName { + get { return _lastName; } + } + + public string Phone { + get { return _phone; } + } + + public string City { + get { return _city; } + } + + public bool Equals( CustomerRegistrationDisplayDTO customerRegistrationDisplayDTO ) { + if ( customerRegistrationDisplayDTO == null ) { + return false; + } + if ( !Equals( _userName, customerRegistrationDisplayDTO._userName ) ) { + return false; + } + if ( !Equals( _firstName, customerRegistrationDisplayDTO._firstName ) ) { + return false; + } + if ( !Equals( _lastName, customerRegistrationDisplayDTO._lastName ) ) { + return false; + } + if ( !Equals( _phone, customerRegistrationDisplayDTO._phone ) ) { + return false; + } + if ( !Equals( _city, customerRegistrationDisplayDTO._city ) ) { + return false; + } + if ( !Equals( _id, customerRegistrationDisplayDTO._id ) ) { + return false; + } + return true; + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as CustomerRegistrationDisplayDTO ); + } + + public override int GetHashCode() { + int result = _userName != null ? _userName.GetHashCode( ) : 0; + result = 29*result + ( _firstName != null ? _firstName.GetHashCode( ) : 0 ); + result = 29*result + ( _lastName != null ? _lastName.GetHashCode( ) : 0 ); + result = 29*result + ( _phone != null ? _phone.GetHashCode( ) : 0 ); + result = 29*result + ( _city != null ? _city.GetHashCode( ) : 0 ); + result = 29*result + ( _id != null ? _id.GetHashCode( ) : 0 ); + return result; + } + + private string _userName; + private string _firstName; + private string _lastName; + private string _phone; + private string _city; + private string _id; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/DisplayLeaseDTO.cs b/slips/src/app/Marina/Presentation/DTO/DisplayLeaseDTO.cs new file mode 100644 index 0000000..a8c94cc --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/DisplayLeaseDTO.cs @@ -0,0 +1,28 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class DisplayLeaseDTO { + public DisplayLeaseDTO( string slipID, string startDate, string expiryDate ) { + _slipID = slipID; + _startDate = startDate; + _expiryDate = expiryDate; + } + + public string SlipID { + get { return _slipID; } + } + + public string StartDate { + get { return _startDate; } + } + + public string ExpiryDate { + get { return _expiryDate; } + } + + private string _slipID; + private string _startDate; + private string _expiryDate; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/DisplayResponseLineDTO.cs b/slips/src/app/Marina/Presentation/DTO/DisplayResponseLineDTO.cs new file mode 100644 index 0000000..b245db6 --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/DisplayResponseLineDTO.cs @@ -0,0 +1,36 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class DisplayResponseLineDTO : IEquatable< DisplayResponseLineDTO > { + private readonly string _message; + + private DisplayResponseLineDTO() {} + + public DisplayResponseLineDTO( string message ) { + _message = message; + } + + public string Message { + get { return _message; } + } + + public bool Equals( DisplayResponseLineDTO displayResponseLineDTO ) { + if ( displayResponseLineDTO == null ) { + return false; + } + return Equals( _message, displayResponseLineDTO._message ); + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as DisplayResponseLineDTO ); + } + + public override int GetHashCode() { + return _message != null ? _message.GetHashCode( ) : 0; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/DisplayResponseLines.cs b/slips/src/app/Marina/Presentation/DTO/DisplayResponseLines.cs new file mode 100644 index 0000000..4f8c74c --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/DisplayResponseLines.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Marina.Presentation.DTO { + [Serializable] + public class DisplayResponseLines : IEnumerable< DisplayResponseLineDTO > { + private readonly string[] _lineItems; + + public DisplayResponseLines( params string[] messages ) { + _lineItems = messages; + } + + IEnumerator< DisplayResponseLineDTO > IEnumerable< DisplayResponseLineDTO >.GetEnumerator() { + foreach ( string message in _lineItems ) { + yield return new DisplayResponseLineDTO( message ); + } + } + + public IEnumerator GetEnumerator() { + return ( ( IEnumerable< DisplayResponseLineDTO > )this ).GetEnumerator( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/DockDisplayDTO.cs b/slips/src/app/Marina/Presentation/DTO/DockDisplayDTO.cs new file mode 100644 index 0000000..1a0e4d0 --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/DockDisplayDTO.cs @@ -0,0 +1,36 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class DockDisplayDTO { + private readonly string _name; + private readonly string _locationName; + private readonly string _waterService; + private readonly string _electricalService; + + private DockDisplayDTO() {} + + public DockDisplayDTO( string name, string locationName, string waterService, string electricalService ) { + _name = name; + _locationName = locationName; + _waterService = waterService; + _electricalService = electricalService; + } + + public string Name { + get { return _name; } + } + + public string LocationName { + get { return _locationName; } + } + + public string WaterService { + get { return _waterService; } + } + + public string ElectricalService { + get { return _electricalService; } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/LoginCredentialsDTO.cs b/slips/src/app/Marina/Presentation/DTO/LoginCredentialsDTO.cs new file mode 100644 index 0000000..33365c1 --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/LoginCredentialsDTO.cs @@ -0,0 +1,24 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class LoginCredentialsDTO { + private readonly string username; + private readonly string password; + + private LoginCredentialsDTO() {} + + public LoginCredentialsDTO( string username, string password ) { + this.username = username; + this.password = password; + } + + public string Username { + get { return username; } + } + + public string Password { + get { return password; } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/RegisterCustomerDTO.cs b/slips/src/app/Marina/Presentation/DTO/RegisterCustomerDTO.cs new file mode 100644 index 0000000..339572e --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/RegisterCustomerDTO.cs @@ -0,0 +1,47 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class RegisterCustomerDTO { + public RegisterCustomerDTO( string userName, string password, string firstName, string lastName, string phone, + string city ) { + _userName = userName; + _password = password; + _firstName = firstName; + _lastName = lastName; + _phone = phone; + _city = city; + } + + public string UserName { + get { return _userName; } + } + + public string Password { + get { return _password; } + } + + public string FirstName { + get { return _firstName; } + } + + public string LastName { + get { return _lastName; } + } + + public string Phone { + get { return _phone; } + } + + public string City { + get { return _city; } + } + + private string _userName; + private string _password; + private string _firstName; + private string _lastName; + private string _phone; + private string _city; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/SlipDisplayDTO.cs b/slips/src/app/Marina/Presentation/DTO/SlipDisplayDTO.cs new file mode 100644 index 0000000..59267e4 --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/SlipDisplayDTO.cs @@ -0,0 +1,48 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class SlipDisplayDTO { + private SlipDisplayDTO() {} + + public SlipDisplayDTO( string dockId, string dockName, string width, string length, string locationName, string slipId ) { + _dockName = dockName; + _slipId = slipId; + _locationName = locationName; + _dockId = dockId; + _width = width; + _length = length; + } + + public string DockName { + get { return _dockName; } + } + + public string Width { + get { return _width; } + } + + public string Length { + get { return _length; } + } + + public string DockId { + get { return _dockId; } + } + + public string LocationName { + get { return _locationName; } + } + + public string SlipId { + get { return _slipId; } + } + + private string _dockName; + private string _width; + private string _length; + private string _dockId; + private string _locationName; + private string _slipId; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/SubmitLeaseRequestDTO.cs b/slips/src/app/Marina/Presentation/DTO/SubmitLeaseRequestDTO.cs new file mode 100644 index 0000000..a7899b1 --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/SubmitLeaseRequestDTO.cs @@ -0,0 +1,60 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class SubmitLeaseRequestDTO : IEquatable< SubmitLeaseRequestDTO > { + private SubmitLeaseRequestDTO() {} + + public SubmitLeaseRequestDTO( long customerId, long slipId, string duration ) { + _customerId = customerId; + _slipId = slipId; + _duration = duration; + } + + public long CustomerId { + get { return _customerId; } + } + + public long SlipId { + get { return _slipId; } + } + + public string Duration { + get { return _duration; } + } + + public bool Equals( SubmitLeaseRequestDTO submitLeaseRequestDTO ) { + if ( submitLeaseRequestDTO == null ) { + return false; + } + if ( _customerId != submitLeaseRequestDTO._customerId ) { + return false; + } + if ( _slipId != submitLeaseRequestDTO._slipId ) { + return false; + } + if ( !Equals( _duration, submitLeaseRequestDTO._duration ) ) { + return false; + } + return true; + } + + public override bool Equals( object obj ) { + if ( ReferenceEquals( this, obj ) ) { + return true; + } + return Equals( obj as SubmitLeaseRequestDTO ); + } + + public override int GetHashCode() { + int result = ( int )_customerId; + result = 29*result + ( int )_slipId; + result = 29*result + ( _duration != null ? _duration.GetHashCode( ) : 0 ); + return result; + } + + private readonly long _customerId; + private readonly long _slipId; + private readonly string _duration; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/DTO/UpdateCustomerRegistrationDTO.cs b/slips/src/app/Marina/Presentation/DTO/UpdateCustomerRegistrationDTO.cs new file mode 100644 index 0000000..8f4681a --- /dev/null +++ b/slips/src/app/Marina/Presentation/DTO/UpdateCustomerRegistrationDTO.cs @@ -0,0 +1,53 @@ +using System; + +namespace Marina.Presentation.DTO { + [Serializable] + public class UpdateCustomerRegistrationDTO { + private long customerId; + private string username; + private string password; + private string firstName; + private string lastName; + private string phoneNumber; + private string city; + + public UpdateCustomerRegistrationDTO( long customerId, string username, string password, string firstName, + string lastName, string phoneNumber, string city ) { + this.customerId = customerId; + this.username = username; + this.password = password; + this.firstName = firstName; + this.lastName = lastName; + this.phoneNumber = phoneNumber; + this.city = city; + } + + public long CustomerId { + get { return customerId; } + } + + public string Username { + get { return username; } + } + + public string Password { + get { return password; } + } + + public string FirstName { + get { return firstName; } + } + + public string LastName { + get { return lastName; } + } + + public string PhoneNumber { + get { return phoneNumber; } + } + + public string City { + get { return city; } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/CustomerRegistrationPresentationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/CustomerRegistrationPresentationMapper.cs new file mode 100644 index 0000000..9d70078 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/CustomerRegistrationPresentationMapper.cs @@ -0,0 +1,17 @@ +using Marina.Presentation.DTO; +using Marina.Presentation.Views; + +namespace Marina.Presentation.Mappers { + public class CustomerRegistrationPresentationMapper : ICustomerRegistrationPresentationMapper { + public RegisterCustomerDTO MapFrom( ICustomerRegistrationView view ) { + return new RegisterCustomerDTO( + view.UserName( ), + view.Password( ), + view.FirstName( ), + view.LastName( ), + view.PhoneNumber( ), + view.City( ) + ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/ICustomerRegistrationPresentationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/ICustomerRegistrationPresentationMapper.cs new file mode 100644 index 0000000..e39373b --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/ICustomerRegistrationPresentationMapper.cs @@ -0,0 +1,8 @@ +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Presentation.Views; + +namespace Marina.Presentation.Mappers { + public interface ICustomerRegistrationPresentationMapper : + IMapper< ICustomerRegistrationView, RegisterCustomerDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/ILeaseRequestDtoFromHttpRequestMapper.cs b/slips/src/app/Marina/Presentation/Mappers/ILeaseRequestDtoFromHttpRequestMapper.cs new file mode 100644 index 0000000..720019c --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/ILeaseRequestDtoFromHttpRequestMapper.cs @@ -0,0 +1,7 @@ +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public interface ILeaseRequestDtoFromHttpRequestMapper : IMapper< IHttpRequest, SubmitLeaseRequestDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/ILoginCredentialsMapper.cs b/slips/src/app/Marina/Presentation/Mappers/ILoginCredentialsMapper.cs new file mode 100644 index 0000000..aac8f81 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/ILoginCredentialsMapper.cs @@ -0,0 +1,7 @@ +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public interface ILoginCredentialsMapper : IMapper< IHttpRequest, LoginCredentialsDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/INewBoatRegistrationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/INewBoatRegistrationMapper.cs new file mode 100644 index 0000000..8e115af --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/INewBoatRegistrationMapper.cs @@ -0,0 +1,7 @@ +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public interface INewBoatRegistrationMapper : IMapper< IHttpRequest, BoatRegistrationDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/IUpdateRegistrationPresentationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/IUpdateRegistrationPresentationMapper.cs new file mode 100644 index 0000000..0c63fd7 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/IUpdateRegistrationPresentationMapper.cs @@ -0,0 +1,7 @@ +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public interface IUpdateRegistrationPresentationMapper : IMapper< IHttpRequest, UpdateCustomerRegistrationDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/LeaseRequestDtoFromHttpRequestMapper.cs b/slips/src/app/Marina/Presentation/Mappers/LeaseRequestDtoFromHttpRequestMapper.cs new file mode 100644 index 0000000..ed5bbc6 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/LeaseRequestDtoFromHttpRequestMapper.cs @@ -0,0 +1,14 @@ +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public class LeaseRequestDtoFromHttpRequestMapper : ILeaseRequestDtoFromHttpRequestMapper { + public SubmitLeaseRequestDTO MapFrom( IHttpRequest input ) { + return new SubmitLeaseRequestDTO( + input.ParsePayloadFor( PayloadKeys.CustomerId ), + input.ParsePayloadFor( PayloadKeys.SlipId ), + input.ParsePayloadFor( PayloadKeys.For( "uxLeaseDuration" ) ) + ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/LoginCredentialsMapper.cs b/slips/src/app/Marina/Presentation/Mappers/LoginCredentialsMapper.cs new file mode 100644 index 0000000..9e13c13 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/LoginCredentialsMapper.cs @@ -0,0 +1,13 @@ +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public class LoginCredentialsMapper : ILoginCredentialsMapper { + public LoginCredentialsDTO MapFrom( IHttpRequest input ) { + return new LoginCredentialsDTO( + input.ParsePayloadFor( PayloadKeys.For( "uxUserNameTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxPasswordTextBox" ) ) + ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/NewBoatRegistrationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/NewBoatRegistrationMapper.cs new file mode 100644 index 0000000..d815e6d --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/NewBoatRegistrationMapper.cs @@ -0,0 +1,16 @@ +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public class NewBoatRegistrationMapper : INewBoatRegistrationMapper { + public BoatRegistrationDTO MapFrom( IHttpRequest input ) { + return new BoatRegistrationDTO( + input.ParsePayloadFor( PayloadKeys.For( "uxRegistrationNumberTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxManufacturerTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxModelYearTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxLengthTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.CustomerId ) + ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Mappers/UpdateRegistrationPresentationMapper.cs b/slips/src/app/Marina/Presentation/Mappers/UpdateRegistrationPresentationMapper.cs new file mode 100644 index 0000000..814fde5 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Mappers/UpdateRegistrationPresentationMapper.cs @@ -0,0 +1,18 @@ +using Marina.Presentation.DTO; +using Marina.Web; + +namespace Marina.Presentation.Mappers { + public class UpdateRegistrationPresentationMapper : IUpdateRegistrationPresentationMapper { + public UpdateCustomerRegistrationDTO MapFrom( IHttpRequest input ) { + return new UpdateCustomerRegistrationDTO( + input.ParsePayloadFor( PayloadKeys.CustomerId ), + input.ParsePayloadFor( PayloadKeys.For( "uxUserNameTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxPasswordTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxFirstNameTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxLastNameTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxPhoneNumberTextBox" ) ), + input.ParsePayloadFor( PayloadKeys.For( "uxCityTextBox" ) ) + ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/PayLoadKeys.cs b/slips/src/app/Marina/Presentation/PayLoadKeys.cs new file mode 100644 index 0000000..6d91a96 --- /dev/null +++ b/slips/src/app/Marina/Presentation/PayLoadKeys.cs @@ -0,0 +1,12 @@ +namespace Marina.Presentation { + public class PayloadKeys { + public static PayloadKey< long > DockId = new PayloadKey< long >( "DID" ); + public static PayloadKey< long > LocationId = new PayloadKey< long >( "LID" ); + public static PayloadKey< long > CustomerId = new PayloadKey< long >( "CID" ); + public static PayloadKey< long > SlipId = new PayloadKey< long >( "SID" ); + + public static PayloadKey< string > For( string controlId ) { + return new PayloadKey< string >( controlId ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/PayloadKey.cs b/slips/src/app/Marina/Presentation/PayloadKey.cs new file mode 100644 index 0000000..d4b31fb --- /dev/null +++ b/slips/src/app/Marina/Presentation/PayloadKey.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Specialized; + +namespace Marina.Presentation +{ + public class PayloadKey< T > : IEquatable< PayloadKey< T > > + { + private readonly string _key; + + public PayloadKey( string key ) + { + _key = key; + } + + public T ParseFrom( NameValueCollection payload ) + { + EnsureKeyIsInPayload( payload ); + return ( T )Convert.ChangeType( payload[ _key ], typeof( T ) ); + } + + private void EnsureKeyIsInPayload( NameValueCollection payload ) + { + if( null == payload[ _key ] ) { + throw new PayloadKeyNotFoundException( _key ); + } + } + + public static implicit operator string( PayloadKey< T > item ) + { + return item._key; + } + + public bool Equals( PayloadKey< T > payloadKey ) + { + return payloadKey != null && Equals( _key, payloadKey._key ); + } + + public override bool Equals( object obj ) + { + return ReferenceEquals( this, obj ) || Equals( obj as PayloadKey< T > ); + } + + public override int GetHashCode( ) + { + return _key.GetHashCode( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/PayloadKeyNotFoundException.cs b/slips/src/app/Marina/Presentation/PayloadKeyNotFoundException.cs new file mode 100644 index 0000000..5cf4279 --- /dev/null +++ b/slips/src/app/Marina/Presentation/PayloadKeyNotFoundException.cs @@ -0,0 +1,7 @@ +using System; + +namespace Marina.Presentation { + public class PayloadKeyNotFoundException : Exception { + public PayloadKeyNotFoundException( string key ) : base( "The payload key could not be found: " + key ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/AvailableSlipsPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/AvailableSlipsPresenter.cs new file mode 100644 index 0000000..9dbe7f5 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/AvailableSlipsPresenter.cs @@ -0,0 +1,25 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Views; +using Marina.Task; + +namespace Marina.Presentation.Presenters { + public class AvailableSlipsPresenter : IAvailableSlipsPresenter { + private readonly IAvailableSlipsView view; + private readonly ICatalogTasks task; + + public AvailableSlipsPresenter( IAvailableSlipsView view ) + : this( + view, + Resolve.DependencyFor< ICatalogTasks >( ) + ) {} + + public AvailableSlipsPresenter( IAvailableSlipsView view, ICatalogTasks task ) { + this.view = view; + this.task = task; + } + + public void Initialize() { + view.Display( task.GetAllAvailableSlips( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/CurrentLeasesPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/CurrentLeasesPresenter.cs new file mode 100644 index 0000000..7f80cc4 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/CurrentLeasesPresenter.cs @@ -0,0 +1,25 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class CurrentLeasesPresenter : ICurrentLeasesPresenter { + public CurrentLeasesPresenter( ICurrentLeasesView view ) + : this( view, Resolve.DependencyFor< IHttpRequest >( ), Resolve.DependencyFor< ILeaseTasks >( ) ) {} + + public CurrentLeasesPresenter( ICurrentLeasesView view, IHttpRequest request, ILeaseTasks task ) { + _view = view; + _request = request; + _task = task; + } + + public void Initialize() { + _view.Display( _task.FindAllLeasesFor( _request.ParsePayloadFor( PayloadKeys.CustomerId ) ) ); + } + + private readonly ICurrentLeasesView _view; + private readonly IHttpRequest _request; + private readonly ILeaseTasks _task; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/CustomerRegistrationPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/CustomerRegistrationPresenter.cs new file mode 100644 index 0000000..ea9ff8d --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/CustomerRegistrationPresenter.cs @@ -0,0 +1,30 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using Marina.Task; + +namespace Marina.Presentation.Presenters { + public class CustomerRegistrationPresenter : ICustomerRegistrationPresenter { + private readonly ICustomerRegistrationView _view; + private readonly ICustomerRegistrationPresentationMapper _mapper; + private readonly IRegistrationTasks _task; + + public CustomerRegistrationPresenter( ICustomerRegistrationView view ) : this( + view, + Resolve.DependencyFor< ICustomerRegistrationPresentationMapper >( ), + Resolve.DependencyFor< IRegistrationTasks >( ) + ) {} + + public CustomerRegistrationPresenter( ICustomerRegistrationView view, + ICustomerRegistrationPresentationMapper mapper, + IRegistrationTasks task ) { + _view = view; + _mapper = mapper; + _task = task; + } + + public void RegisterCustomer( ) { + _view.Display( _task.RegisterNew( _mapper.MapFrom( _view ) ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/DockPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/DockPresenter.cs new file mode 100644 index 0000000..4eb9402 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/DockPresenter.cs @@ -0,0 +1,31 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class DockPresenter : IDockPresenter { + public DockPresenter( IDockView view ) + : this( + view, + Resolve.DependencyFor< IHttpRequest >( ), + Resolve.DependencyFor< ICatalogTasks >( ) + ) {} + + public DockPresenter( IDockView view, IHttpRequest request, ICatalogTasks task ) { + _request = request; + _view = view; + _task = task; + } + + public void Initialize() { + long dockId = _request.ParsePayloadFor( PayloadKeys.DockId ); + _view.Display( _task.GetDockInformationBy( dockId ) ); + _view.Display( _task.GetAvailableSlipsForDockBy( dockId ) ); + } + + private readonly IDockView _view; + private readonly ICatalogTasks _task; + private readonly IHttpRequest _request; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/IAvailableSlipsPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/IAvailableSlipsPresenter.cs new file mode 100644 index 0000000..38d4dd3 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/IAvailableSlipsPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface IAvailableSlipsPresenter { + void Initialize( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/ICurrentLeasesPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/ICurrentLeasesPresenter.cs new file mode 100644 index 0000000..e5c0efb --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/ICurrentLeasesPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface ICurrentLeasesPresenter { + void Initialize(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/ICustomerRegistrationPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/ICustomerRegistrationPresenter.cs new file mode 100644 index 0000000..7089c7f --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/ICustomerRegistrationPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface ICustomerRegistrationPresenter { + void RegisterCustomer( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/IDockPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/IDockPresenter.cs new file mode 100644 index 0000000..fb250d2 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/IDockPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface IDockPresenter { + void Initialize( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/ILeaseSlipPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/ILeaseSlipPresenter.cs new file mode 100644 index 0000000..4908743 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/ILeaseSlipPresenter.cs @@ -0,0 +1,7 @@ +namespace Marina.Presentation.Presenters { + public interface ILeaseSlipPresenter { + void Initialize(); + + void SubmitLeaseRequest(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/ILoginPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/ILoginPresenter.cs new file mode 100644 index 0000000..554ef98 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/ILoginPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface ILoginPresenter { + void Login( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/IRegisterBoatPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/IRegisterBoatPresenter.cs new file mode 100644 index 0000000..37f558f --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/IRegisterBoatPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface IRegisterBoatPresenter { + void SubmitRegistration( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/IUpdateCustomerRegistrationPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/IUpdateCustomerRegistrationPresenter.cs new file mode 100644 index 0000000..f74171c --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/IUpdateCustomerRegistrationPresenter.cs @@ -0,0 +1,7 @@ +namespace Marina.Presentation.Presenters { + public interface IUpdateCustomerRegistrationPresenter { + void Initialize( ); + + void UpdateRegistration( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/IViewRegisteredBoatsPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/IViewRegisteredBoatsPresenter.cs new file mode 100644 index 0000000..4bee850 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/IViewRegisteredBoatsPresenter.cs @@ -0,0 +1,5 @@ +namespace Marina.Presentation.Presenters { + public interface IViewRegisteredBoatsPresenter { + void Initialize(); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/LeaseSlipPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/LeaseSlipPresenter.cs new file mode 100644 index 0000000..e24441c --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/LeaseSlipPresenter.cs @@ -0,0 +1,41 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class LeaseSlipPresenter : ILeaseSlipPresenter { + public LeaseSlipPresenter( ILeaseSlipView view ) + : this( + view, + Resolve.DependencyFor< IHttpRequest >( ), + Resolve.DependencyFor< ICatalogTasks >( ), + Resolve.DependencyFor< ILeaseTasks >( ), + Resolve.DependencyFor< ILeaseRequestDtoFromHttpRequestMapper >( ) + ) {} + + public LeaseSlipPresenter( ILeaseSlipView view, IHttpRequest request, ICatalogTasks task, ILeaseTasks leaseTask, + ILeaseRequestDtoFromHttpRequestMapper mapper ) { + _view = view; + _request = request; + _task = task; + _leaseTask = leaseTask; + _mapper = mapper; + } + + public void Initialize() { + _view.Display( _task.FindSlipBy( _request.ParsePayloadFor( PayloadKeys.SlipId ) ) ); + } + + public void SubmitLeaseRequest() { + _view.Display( _leaseTask.RequestLeaseUsing( _mapper.MapFrom( _request ) ) ); + } + + private readonly ILeaseSlipView _view; + private readonly IHttpRequest _request; + private readonly ICatalogTasks _task; + private readonly ILeaseTasks _leaseTask; + private readonly ILeaseRequestDtoFromHttpRequestMapper _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/LoginPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/LoginPresenter.cs new file mode 100644 index 0000000..94ae726 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/LoginPresenter.cs @@ -0,0 +1,34 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class LoginPresenter : ILoginPresenter { + public LoginPresenter( ILoginView view ) + : this( + view, + Resolve.DependencyFor< IHttpRequest >( ), + Resolve.DependencyFor< IAuthenticationTask >( ), + Resolve.DependencyFor< ILoginCredentialsMapper >( ) + ) {} + + public LoginPresenter( ILoginView view, IHttpRequest request, IAuthenticationTask task, + ILoginCredentialsMapper mapper ) { + _view = view; + _request = request; + _task = task; + _mapper = mapper; + } + + public void Login() { + _view.Display( _task.AuthenticateUserUsing( _mapper.MapFrom( _request ) ) ); + } + + private readonly ILoginView _view; + private readonly IHttpRequest _request; + private readonly IAuthenticationTask _task; + private readonly ILoginCredentialsMapper _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/RegisterBoatPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/RegisterBoatPresenter.cs new file mode 100644 index 0000000..693c1ff --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/RegisterBoatPresenter.cs @@ -0,0 +1,33 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class RegisterBoatPresenter : IRegisterBoatPresenter { + public RegisterBoatPresenter( IRegisterBoatView view ) + : this( view, + Resolve.DependencyFor< IHttpRequest >( ), + Resolve.DependencyFor< IRegistrationTasks >( ), + Resolve.DependencyFor< INewBoatRegistrationMapper >( ) + ) {} + + public RegisterBoatPresenter( IRegisterBoatView view, IHttpRequest request, IRegistrationTasks task, + INewBoatRegistrationMapper mapper ) { + _view = view; + _request = request; + _task = task; + _mapper = mapper; + } + + public void SubmitRegistration() { + _view.Display( _task.AddNewBoatUsing( _mapper.MapFrom( _request ) ) ); + } + + private readonly IRegisterBoatView _view; + private readonly IHttpRequest _request; + private readonly IRegistrationTasks _task; + private readonly INewBoatRegistrationMapper _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/UpdateCustomerRegistrationPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/UpdateCustomerRegistrationPresenter.cs new file mode 100644 index 0000000..8a4047f --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/UpdateCustomerRegistrationPresenter.cs @@ -0,0 +1,44 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class UpdateCustomerRegistrationPresenter : IUpdateCustomerRegistrationPresenter { + public UpdateCustomerRegistrationPresenter( IUpdateRegistrationView view ) : + this( + view, + Resolve.DependencyFor< IHttpRequest >( ), + Resolve.DependencyFor< IRegistrationTasks >( ), + Resolve.DependencyFor< IUpdateRegistrationPresentationMapper >( ) + ) {} + + public UpdateCustomerRegistrationPresenter( IUpdateRegistrationView view, IHttpRequest request, + IRegistrationTasks task, + IUpdateRegistrationPresentationMapper mapper ) { + _request = request; + _view = view; + _task = task; + _mapper = mapper; + } + + public void Initialize() { + _view.Display( _task.LoadRegistrationFor( CustomerId( ) ) ); + } + + public void UpdateRegistration() { + _view.Display( _task.UpdateRegistrationFor( _mapper.MapFrom( _request ) ) ); + Initialize( ); + } + + private long CustomerId() { + return _request.ParsePayloadFor( PayloadKeys.CustomerId ); + } + + private readonly IUpdateRegistrationView _view; + private readonly IRegistrationTasks _task; + private readonly IUpdateRegistrationPresentationMapper _mapper; + private readonly IHttpRequest _request; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Presenters/ViewRegisteredBoatsPresenter.cs b/slips/src/app/Marina/Presentation/Presenters/ViewRegisteredBoatsPresenter.cs new file mode 100644 index 0000000..6728c01 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Presenters/ViewRegisteredBoatsPresenter.cs @@ -0,0 +1,25 @@ +using Marina.Infrastructure.Container; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; + +namespace Marina.Presentation.Presenters { + public class ViewRegisteredBoatsPresenter : IViewRegisteredBoatsPresenter { + public ViewRegisteredBoatsPresenter( IRegisteredBoatsView view ) + : this( view, Resolve.DependencyFor< IRegistrationTasks >( ), Resolve.DependencyFor< IHttpRequest >( ) ) {} + + public ViewRegisteredBoatsPresenter( IRegisteredBoatsView view, IRegistrationTasks task, IHttpRequest request ) { + _view = view; + _task = task; + _request = request; + } + + public void Initialize() { + _view.Display( _task.AllBoatsFor( _request.ParsePayloadFor( PayloadKeys.CustomerId ) ) ); + } + + private readonly IRegisteredBoatsView _view; + private readonly IRegistrationTasks _task; + private readonly IHttpRequest _request; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/IAvailableSlipsView.cs b/slips/src/app/Marina/Presentation/Views/IAvailableSlipsView.cs new file mode 100644 index 0000000..c421e91 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/IAvailableSlipsView.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface IAvailableSlipsView { + void Display( IEnumerable< SlipDisplayDTO > availableSlips ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/ICurrentLeasesView.cs b/slips/src/app/Marina/Presentation/Views/ICurrentLeasesView.cs new file mode 100644 index 0000000..682dfe5 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/ICurrentLeasesView.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface ICurrentLeasesView { + void Display( IEnumerable< DisplayLeaseDTO > leases ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/ICustomerRegistrationView.cs b/slips/src/app/Marina/Presentation/Views/ICustomerRegistrationView.cs new file mode 100644 index 0000000..be50275 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/ICustomerRegistrationView.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface ICustomerRegistrationView { + string UserName( ); + + string Password( ); + + string FirstName( ); + + string LastName( ); + + string PhoneNumber( ); + + string City( ); + + void Display( IEnumerable< DisplayResponseLineDTO > response ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/IDockView.cs b/slips/src/app/Marina/Presentation/Views/IDockView.cs new file mode 100644 index 0000000..975248c --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/IDockView.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface IDockView { + void Display( DockDisplayDTO dto ); + void Display( IEnumerable< SlipDisplayDTO > availableSlips ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/ILeaseSlipView.cs b/slips/src/app/Marina/Presentation/Views/ILeaseSlipView.cs new file mode 100644 index 0000000..2751a54 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/ILeaseSlipView.cs @@ -0,0 +1,9 @@ +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface ILeaseSlipView { + void Display( SlipDisplayDTO slip ); + + void Display( DisplayResponseLineDTO response ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/ILoginView.cs b/slips/src/app/Marina/Presentation/Views/ILoginView.cs new file mode 100644 index 0000000..b5d7c8f --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/ILoginView.cs @@ -0,0 +1,7 @@ +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface ILoginView { + void Display( DisplayResponseLineDTO responseMessage ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/IRegisterBoatView.cs b/slips/src/app/Marina/Presentation/Views/IRegisterBoatView.cs new file mode 100644 index 0000000..42559b7 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/IRegisterBoatView.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface IRegisterBoatView { + void Display( IEnumerable< DisplayResponseLineDTO > response ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/IRegisteredBoatsView.cs b/slips/src/app/Marina/Presentation/Views/IRegisteredBoatsView.cs new file mode 100644 index 0000000..9162695 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/IRegisteredBoatsView.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface IRegisteredBoatsView { + void Display( IEnumerable< BoatRegistrationDTO > boats ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Presentation/Views/IUpdateRegistrationView.cs b/slips/src/app/Marina/Presentation/Views/IUpdateRegistrationView.cs new file mode 100644 index 0000000..8474113 --- /dev/null +++ b/slips/src/app/Marina/Presentation/Views/IUpdateRegistrationView.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Presentation.Views { + public interface IUpdateRegistrationView { + void Display( CustomerRegistrationDisplayDTO customerRegistration ); + void Display( IEnumerable< DisplayResponseLineDTO > response ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Properties/AssemblyInfo.cs b/slips/src/app/Marina/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f9b9f7f --- /dev/null +++ b/slips/src/app/Marina/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Marina")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Marina")] +[assembly: AssemblyCopyright("Copyright © 2007")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("997b23e8-9d54-4169-a5a3-ace0266a1964")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/slips/src/app/Marina/Task/ApplicationStartupTask.cs b/slips/src/app/Marina/Task/ApplicationStartupTask.cs new file mode 100644 index 0000000..e55eccf --- /dev/null +++ b/slips/src/app/Marina/Task/ApplicationStartupTask.cs @@ -0,0 +1,14 @@ +using Marina.Infrastructure.Container; +using Marina.Infrastructure.Container.Windsor; + +namespace Marina.Task { + public class ApplicationStartupTask : IApplicationStartupTask { + public static void ApplicationBegin( ) { + new ApplicationStartupTask( ).Execute( ); + } + + public void Execute( ) { + Resolve.InitializeWith( new WindsorDependencyContainer( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/AuthenticationTask.cs b/slips/src/app/Marina/Task/AuthenticationTask.cs new file mode 100644 index 0000000..75424a9 --- /dev/null +++ b/slips/src/app/Marina/Task/AuthenticationTask.cs @@ -0,0 +1,41 @@ +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Presentation.DTO; +using Marina.Web.Http; + +namespace Marina.Task { + public class AuthenticationTask : IAuthenticationTask { + public AuthenticationTask( ICustomerRepository customers, IHttpGateway gateway ) { + _customers = customers; + _gateway = gateway; + } + + public DisplayResponseLineDTO AuthenticateUserUsing( LoginCredentialsDTO credentials ) { + if ( CheckIfPasswordMatches( credentials, _customers.FindBy( credentials.Username ) ) ) { + _gateway.AddAuthenticationCookieFor( credentials.Username, _customers.FindBy( credentials.Username ).ID( ) ); + return ValidCredentialsMessage( credentials.Username ); + } + else { + return InvalidCredentialsMessage( ); + } + } + + private static DisplayResponseLineDTO ValidCredentialsMessage( string username ) { + return new DisplayResponseLineDTO( string.Format( "Currently logged in as {0}", username ) ); + } + + private static DisplayResponseLineDTO InvalidCredentialsMessage() { + return new DisplayResponseLineDTO( "Invalid credentials specified" ); + } + + private static bool CheckIfPasswordMatches( LoginCredentialsDTO credentials, ICustomer customer ) { + if ( customer != null && customer.Registration( ) != null ) { + return customer.Registration( ).Password( ).Equals( credentials.Password ); + } + return false; + } + + private readonly ICustomerRepository _customers; + private readonly IHttpGateway _gateway; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/CatalogTasks.cs b/slips/src/app/Marina/Task/CatalogTasks.cs new file mode 100644 index 0000000..e3c18a2 --- /dev/null +++ b/slips/src/app/Marina/Task/CatalogTasks.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task.Mappers; + +namespace Marina.Task { + public class CatalogTasks : ICatalogTasks { + public CatalogTasks() + : this( + Resolve.DependencyFor< ISlipsRepository >( ), + Resolve.DependencyFor< ISlipsToDisplayDTOMapper >( ), + Resolve.DependencyFor< IDockRepository >( ), + Resolve.DependencyFor< IDockToDisplayDTOMapper >( ) + ) {} + + public CatalogTasks( ISlipsRepository slipRepository, ISlipsToDisplayDTOMapper slipMapper, + IDockRepository dockRepository, IDockToDisplayDTOMapper dockMapper ) { + _slips = slipRepository; + _slipMapper = slipMapper; + _docks = dockRepository; + _dockMapper = dockMapper; + } + + public IEnumerable< SlipDisplayDTO > GetAvailableSlipsForDockBy( long dockId ) { + IDock dock = _docks.FindBy( dockId ); + foreach ( ISlip slip in _slips.AllAvailableSlipsFor( dock ) ) { + yield return _slipMapper.MapFrom( slip ); + } + } + + public DockDisplayDTO GetDockInformationBy( long dockId ) { + return _dockMapper.MapFrom( _docks.FindBy( dockId ) ); + } + + public IEnumerable< SlipDisplayDTO > GetAllAvailableSlips() { + foreach ( ISlip availableSlip in _slips.AllAvailableSlips( ) ) { + yield return _slipMapper.MapFrom( availableSlip ); + } + } + + public SlipDisplayDTO FindSlipBy( long slipId ) { + return _slipMapper.MapFrom( _slips.FindBy( slipId ) ); + } + + private readonly ISlipsRepository _slips; + private readonly ISlipsToDisplayDTOMapper _slipMapper; + private readonly IDockRepository _docks; + private readonly IDockToDisplayDTOMapper _dockMapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/IApplicationStartupTask.cs b/slips/src/app/Marina/Task/IApplicationStartupTask.cs new file mode 100644 index 0000000..8fcdf6e --- /dev/null +++ b/slips/src/app/Marina/Task/IApplicationStartupTask.cs @@ -0,0 +1,5 @@ +namespace Marina.Task { + public interface IApplicationStartupTask { + void Execute( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/IAuthenticationTask.cs b/slips/src/app/Marina/Task/IAuthenticationTask.cs new file mode 100644 index 0000000..9072578 --- /dev/null +++ b/slips/src/app/Marina/Task/IAuthenticationTask.cs @@ -0,0 +1,7 @@ +using Marina.Presentation.DTO; + +namespace Marina.Task { + public interface IAuthenticationTask { + DisplayResponseLineDTO AuthenticateUserUsing( LoginCredentialsDTO credentials ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/ICatalogTasks.cs b/slips/src/app/Marina/Task/ICatalogTasks.cs new file mode 100644 index 0000000..5d438a2 --- /dev/null +++ b/slips/src/app/Marina/Task/ICatalogTasks.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Task { + public interface ICatalogTasks { + IEnumerable< SlipDisplayDTO > GetAvailableSlipsForDockBy( long dockId ); + + DockDisplayDTO GetDockInformationBy( long dockId ); + + IEnumerable< SlipDisplayDTO > GetAllAvailableSlips(); + + SlipDisplayDTO FindSlipBy( long slipId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/ILeaseTasks.cs b/slips/src/app/Marina/Task/ILeaseTasks.cs new file mode 100644 index 0000000..f781a29 --- /dev/null +++ b/slips/src/app/Marina/Task/ILeaseTasks.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Task { + public interface ILeaseTasks { + IEnumerable< DisplayLeaseDTO > FindAllLeasesFor( long customerId ); + + DisplayResponseLineDTO RequestLeaseUsing( SubmitLeaseRequestDTO request ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/IRegistrationTasks.cs b/slips/src/app/Marina/Task/IRegistrationTasks.cs new file mode 100644 index 0000000..97974b3 --- /dev/null +++ b/slips/src/app/Marina/Task/IRegistrationTasks.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Task { + public interface IRegistrationTasks { + IEnumerable< DisplayResponseLineDTO > RegisterNew( RegisterCustomerDTO customer ); + + IEnumerable< DisplayResponseLineDTO > AddNewBoatUsing( BoatRegistrationDTO boat ); + + CustomerRegistrationDisplayDTO LoadRegistrationFor( long customerId ); + + IEnumerable< DisplayResponseLineDTO > UpdateRegistrationFor( UpdateCustomerRegistrationDTO registration ); + + IEnumerable< BoatRegistrationDTO > AllBoatsFor( long customerId ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/LeaseTasks.cs b/slips/src/app/Marina/Task/LeaseTasks.cs new file mode 100644 index 0000000..1dfb592 --- /dev/null +++ b/slips/src/app/Marina/Task/LeaseTasks.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Marina.Domain; +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Task.Mappers; + +namespace Marina.Task { + public class LeaseTasks : ILeaseTasks { + public LeaseTasks( ICustomerRepository customers, ISlipsRepository slips, ILeaseToDtoMapper mapper ) { + _customers = customers; + _slips = slips; + _mapper = mapper; + } + + public IEnumerable< DisplayLeaseDTO > FindAllLeasesFor( long customerId ) { + return new EnumerableMapper< ISlipLease, DisplayLeaseDTO >( _mapper ) + .MapFrom( _customers.FindBy( customerId ).Leases( ) ); + } + + public DisplayResponseLineDTO RequestLeaseUsing( SubmitLeaseRequestDTO request ) { + ICustomer customer = _customers.FindBy( request.CustomerId ); + try { + customer.Lease( _slips.FindBy( request.SlipId ), LeaseDurations.FindBy( request.Duration ) ); + _customers.Save( customer ); + return new DisplayResponseLineDTO( "Success!" ); + } + catch ( SlipIsAlreadyLeasedException ) { + return new DisplayResponseLineDTO( "Slip is already leased!" ); + } + } + + private readonly ICustomerRepository _customers; + private readonly ISlipsRepository _slips; + private readonly ILeaseToDtoMapper _mapper; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/BrokenRulesToDisplayItemMapper.cs b/slips/src/app/Marina/Task/Mappers/BrokenRulesToDisplayItemMapper.cs new file mode 100644 index 0000000..5a9aee6 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/BrokenRulesToDisplayItemMapper.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public class BrokenRulesToDisplayItemMapper : IBrokenRulesToDisplayItemMapper { + public IEnumerable< DisplayResponseLineDTO > MapFrom( IEnumerable< IBrokenRule > input ) { + foreach ( IBrokenRule brokenRule in input ) { + yield return new DisplayResponseLineDTO( brokenRule.Message( ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/DockToDisplayDTOMapper.cs b/slips/src/app/Marina/Task/Mappers/DockToDisplayDTOMapper.cs new file mode 100644 index 0000000..89ef037 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/DockToDisplayDTOMapper.cs @@ -0,0 +1,16 @@ +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public class DockToDisplayDTOMapper : IDockToDisplayDTOMapper { + public DockDisplayDTO MapFrom( IDock input ) { + return + new DockDisplayDTO( + input.Name( ), + input.Location( ).Name( ), + input.IsUtilityEnabled( Utilities.Water ).ToString( ), + input.IsUtilityEnabled( Utilities.Electrical ).ToString( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/IBrokenRulesToDisplayItemMapper.cs b/slips/src/app/Marina/Task/Mappers/IBrokenRulesToDisplayItemMapper.cs new file mode 100644 index 0000000..1af9300 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/IBrokenRulesToDisplayItemMapper.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public interface IBrokenRulesToDisplayItemMapper : + IMapper< IEnumerable< IBrokenRule >, IEnumerable< DisplayResponseLineDTO > > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/IDockToDisplayDTOMapper.cs b/slips/src/app/Marina/Task/Mappers/IDockToDisplayDTOMapper.cs new file mode 100644 index 0000000..264a92a --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/IDockToDisplayDTOMapper.cs @@ -0,0 +1,7 @@ +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public interface IDockToDisplayDTOMapper : IMapper< IDock, DockDisplayDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/ILeaseToDtoMapper.cs b/slips/src/app/Marina/Task/Mappers/ILeaseToDtoMapper.cs new file mode 100644 index 0000000..473ed68 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/ILeaseToDtoMapper.cs @@ -0,0 +1,7 @@ +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public interface ILeaseToDtoMapper : IMapper< ISlipLease, DisplayLeaseDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/ISlipsToDisplayDTOMapper.cs b/slips/src/app/Marina/Task/Mappers/ISlipsToDisplayDTOMapper.cs new file mode 100644 index 0000000..95f97ba --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/ISlipsToDisplayDTOMapper.cs @@ -0,0 +1,7 @@ +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public interface ISlipsToDisplayDTOMapper : IMapper< ISlip, SlipDisplayDTO > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/LeaseToDtoMapper.cs b/slips/src/app/Marina/Task/Mappers/LeaseToDtoMapper.cs new file mode 100644 index 0000000..a776f52 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/LeaseToDtoMapper.cs @@ -0,0 +1,12 @@ +using Marina.Domain.Interfaces; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public class LeaseToDtoMapper : ILeaseToDtoMapper { + public DisplayLeaseDTO MapFrom( ISlipLease input ) { + return new DisplayLeaseDTO( input.Slip( ).ID( ).ToString( ), + input.StartDate( ).ToString( ), + input.ExpiryDate( ).ToString( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/Mappers/SlipsToDisplayDTOMapper.cs b/slips/src/app/Marina/Task/Mappers/SlipsToDisplayDTOMapper.cs new file mode 100644 index 0000000..c5ba592 --- /dev/null +++ b/slips/src/app/Marina/Task/Mappers/SlipsToDisplayDTOMapper.cs @@ -0,0 +1,16 @@ +using Marina.Domain.Interfaces; +using Marina.Presentation.DTO; + +namespace Marina.Task.Mappers { + public class SlipsToDisplayDTOMapper : ISlipsToDisplayDTOMapper { + public SlipDisplayDTO MapFrom( ISlip input ) { + return + new SlipDisplayDTO( input.Dock( ).ID( ).ToString( ), + input.Dock( ).Name( ), + input.Width( ).ToString( ), + input.Length( ).ToString( ), + input.Location( ).Name( ), + input.ID( ).ToString( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Task/RegistrationTasks.cs b/slips/src/app/Marina/Task/RegistrationTasks.cs new file mode 100644 index 0000000..44c60ee --- /dev/null +++ b/slips/src/app/Marina/Task/RegistrationTasks.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task.Mappers; + +namespace Marina.Task { + public class RegistrationTasks : IRegistrationTasks { + public RegistrationTasks() + : this( + Resolve.DependencyFor< IBrokenRulesToDisplayItemMapper >( ), + Resolve.DependencyFor< ICustomerRepository >( ) + ) {} + + public RegistrationTasks( IBrokenRulesToDisplayItemMapper mapper, ICustomerRepository customers ) { + _mapper = mapper; + _customers = customers; + } + + public IEnumerable< DisplayResponseLineDTO > RegisterNew( RegisterCustomerDTO customer ) { + if ( null == _customers.FindBy( customer.UserName ) ) { + ICustomer newCustomer = _customers.NewCustomer( ); + newCustomer.RegisterAccount( customer.UserName, + customer.Password, + customer.FirstName, + customer.LastName, + customer.Phone, + customer.City ); + if ( !newCustomer.Registration( ).IsValid( ) ) { + return _mapper.MapFrom( newCustomer.Registration( ).BrokenRules( ) ); + } + else { + _customers.Save( newCustomer ); + return new DisplayResponseLines( "Success!" ); + } + } + else { + return + new DisplayResponseLines( + string.Format( "The username {0} is already taken. Please try another!", customer.UserName ) ); + } + } + + public IEnumerable< DisplayResponseLineDTO > AddNewBoatUsing( BoatRegistrationDTO boat ) { + ICustomer customer = _customers.FindBy( boat.CustomerId ); + customer.RegisterBoat( boat.RegistrationNumber, + boat.Manufacturer, + new DateTime( Convert.ToInt32( boat.ModelYear ), 1, 1 ), + Convert.ToInt64( boat.Length ) ); + _customers.Save( customer ); + return new DisplayResponseLines( "Success!" ); + } + + public CustomerRegistrationDisplayDTO LoadRegistrationFor( long customerId ) { + IRegistration registration = _customers.FindBy( customerId ).Registration( ); + return + new CustomerRegistrationDisplayDTO( customerId.ToString( ), + registration.Username( ), + registration.FirstName( ), + registration.LastName( ), + registration.PhoneNumber( ), + registration.City( ) + ); + } + + public IEnumerable< DisplayResponseLineDTO > UpdateRegistrationFor( UpdateCustomerRegistrationDTO registration ) { + ICustomer customer = _customers.FindBy( registration.CustomerId ); + + customer.UpdateRegistrationTo( registration.Username, registration.Password, registration.FirstName, + registration.LastName, registration.PhoneNumber, registration.City ); + if ( customer.Registration( ).IsValid( ) ) { + _customers.Save( customer ); + } + return _mapper.MapFrom( customer.Registration( ).BrokenRules( ) ); + } + + public IEnumerable< BoatRegistrationDTO > AllBoatsFor( long customerId ) { + ICustomer customer = _customers.FindBy( customerId ); + + foreach ( IBoat boat in customer.RegisteredBoats( ) ) { + yield return + new BoatRegistrationDTO( boat.RegistrationNumber( ), boat.Manufacturer( ), boat.YearOfModel( ).ToString( ), + boat.LengthInFeet( ).ToString( ), customerId ); + } + } + + private readonly IBrokenRulesToDisplayItemMapper _mapper; + private readonly ICustomerRepository _customers; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/AuthenticationHttpModule.cs b/slips/src/app/Marina/Web/AuthenticationHttpModule.cs new file mode 100644 index 0000000..c90c317 --- /dev/null +++ b/slips/src/app/Marina/Web/AuthenticationHttpModule.cs @@ -0,0 +1,28 @@ +using System.Security.Principal; +using System.Web; +using System.Web.Security; + +namespace Marina.Web { + public class AuthenticationHttpModule : IHttpModule { + public void Init( HttpApplication context ) { + context.AuthenticateRequest += delegate { AuthenticateHttpRequest( ); }; + } + + public void Dispose() {} + + public void AuthenticateHttpRequest() { + HttpCookie cookie = GetCookieFrom( HttpContext.Current ); + if ( null != cookie ) { + BindPrincipalToThreadUsing( FormsAuthentication.Decrypt( cookie.Value ).Name ); + } + } + + private HttpCookie GetCookieFrom( HttpContext context ) { + return context.Request.Cookies[ FormsAuthentication.FormsCookieName ]; + } + + private void BindPrincipalToThreadUsing( string username ) { + HttpContext.Current.User = new GenericPrincipal( new GenericIdentity( username ), new string[] {"Customer"} ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Commands/AvailableSlipsCommand.cs b/slips/src/app/Marina/Web/Commands/AvailableSlipsCommand.cs new file mode 100644 index 0000000..4c14b14 --- /dev/null +++ b/slips/src/app/Marina/Web/Commands/AvailableSlipsCommand.cs @@ -0,0 +1,23 @@ +using Marina.Infrastructure; +using Marina.Infrastructure.Container; +using Marina.Task; +using Marina.Web.Views.Pages; + +namespace Marina.Web.Commands { + public class AvailableSlipsCommand : ICommand { + public AvailableSlipsCommand() : this( new AvailableSlipsWebView( ), Resolve.DependencyFor< ICatalogTasks >( ) ) {} + + public AvailableSlipsCommand( IAvailableSlipsWebView view, ICatalogTasks task ) { + _view = view; + _task = task; + } + + public void Execute() { + _view.AddToBag( _task.GetAllAvailableSlips( ) ); + _view.Render( ); + } + + private readonly IAvailableSlipsWebView _view; + private readonly ICatalogTasks _task; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Commands/CommandNames.cs b/slips/src/app/Marina/Web/Commands/CommandNames.cs new file mode 100644 index 0000000..a676be7 --- /dev/null +++ b/slips/src/app/Marina/Web/Commands/CommandNames.cs @@ -0,0 +1,5 @@ +namespace Marina.Web.Commands { + public class CommandNames { + public const string AvailableSlips = "AvailableSlips.marina"; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Commands/RedirectCommand.cs b/slips/src/app/Marina/Web/Commands/RedirectCommand.cs new file mode 100644 index 0000000..c87c423 --- /dev/null +++ b/slips/src/app/Marina/Web/Commands/RedirectCommand.cs @@ -0,0 +1,11 @@ +using Marina.Infrastructure; +using Marina.Web.Views; + +namespace Marina.Web.Commands { + public class RedirectCommand : ICommand { + public void Execute() { + Redirect.To( WebViews.Login ); + //throw new Exception( "Could not find a handler for request" ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/CurrentHttpContext.cs b/slips/src/app/Marina/Web/CurrentHttpContext.cs new file mode 100644 index 0000000..8f3b959 --- /dev/null +++ b/slips/src/app/Marina/Web/CurrentHttpContext.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections; +using System.Security.Principal; +using System.Web; +using System.Web.Caching; +using System.Web.Profile; +using System.Web.SessionState; + +namespace Marina.Web { + public class CurrentHttpContext : IHttpContext { + public void AddError( Exception errorInfo ) { + Current( ).AddError( errorInfo ); + } + + public void ClearError() { + Current( ).ClearError( ); + } + + public object GetSection( string sectionName ) { + return Current( ).GetSection( sectionName ); + } + + public void RewritePath( string path ) { + Current( ).RewritePath( path ); + } + + public void RewritePath( string path, bool rebaseClientPath ) { + Current( ).RewritePath( path, rebaseClientPath ); + } + + public void RewritePath( string filePath, string pathInfo, string queryString ) { + Current( ).RewritePath( filePath, pathInfo, queryString ); + } + + public void RewritePath( string filePath, string pathInfo, string queryString, bool setClientFilePath ) { + Current( ).RewritePath( filePath, pathInfo, queryString, setClientFilePath ); + } + + public HttpApplication ApplicationInstance { + get { return Current( ).ApplicationInstance; } + set { Current( ).ApplicationInstance = value; } + } + + public HttpApplicationState Application { + get { return Current( ).Application; } + } + + public IHttpHandler Handler { + get { return Current( ).Handler; } + set { Current( ).Handler = value; } + } + + public IHttpHandler PreviousHandler { + get { return Current( ).PreviousHandler; } + } + + public IHttpHandler CurrentHandler { + get { return Current( ).CurrentHandler; } + } + + public HttpRequest Request { + get { return Current( ).Request; } + } + + public HttpResponse Response { + get { return Current( ).Response; } + } + + public TraceContext Trace { + get { return Current( ).Trace; } + } + + public IDictionary Items { + get { return Current( ).Items; } + } + + public HttpSessionState Session { + get { return Current( ).Session; } + } + + public HttpServerUtility Server { + get { return Current( ).Server; } + } + + public Exception Error { + get { return Current( ).Error; } + } + + public Exception[] AllErrors { + get { return Current( ).AllErrors; } + } + + public IPrincipal User { + get { return Current( ).User; } + set { Current( ).User = value; } + } + + public ProfileBase Profile { + get { return Current( ).Profile; } + } + + public bool SkipAuthorization { + get { return Current( ).SkipAuthorization; } + set { Current( ).SkipAuthorization = value; } + } + + public bool IsDebuggingEnabled { + get { return Current( ).IsDebuggingEnabled; } + } + + public bool IsCustomErrorEnabled { + get { return Current( ).IsCustomErrorEnabled; } + } + + public DateTime Timestamp { + get { return Current( ).Timestamp; } + } + + public Cache Cache { + get { return Current( ).Cache; } + } + + public RequestNotification CurrentNotification { + get { return Current( ).CurrentNotification; } + } + + public bool IsPostNotification { + get { return Current( ).IsPostNotification; } + } + + private HttpContext Current() { + return HttpContext.Current; + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/CurrentHttpRequest.cs b/slips/src/app/Marina/Web/CurrentHttpRequest.cs new file mode 100644 index 0000000..35c4fa5 --- /dev/null +++ b/slips/src/app/Marina/Web/CurrentHttpRequest.cs @@ -0,0 +1,20 @@ +using System.Collections.Specialized; +using Marina.Presentation; + +namespace Marina.Web { + public class CurrentHttpRequest : IHttpRequest { + public CurrentHttpRequest( IHttpContext context ) { + _context = context; + } + + public T ParsePayloadFor< T >( PayloadKey< T > key ) { + return key.ParseFrom( Payload( ) ); + } + + private NameValueCollection Payload() { + return new NameValueCollection( _context.Request.Params ); + } + + private readonly IHttpContext _context; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/FrontController.cs b/slips/src/app/Marina/Web/FrontController.cs new file mode 100644 index 0000000..8090cb9 --- /dev/null +++ b/slips/src/app/Marina/Web/FrontController.cs @@ -0,0 +1,21 @@ +using System.Web; +using Marina.Web.Handlers; +using Marina.Web.Http; + +namespace Marina.Web { + public class FrontController : IHttpHandler { + public FrontController( IHttpGateway gateway ) { + _gateway = gateway; + } + + public void ProcessRequest( HttpContext context ) { + new Dispatcher( ).FindFor( _gateway ).Execute( ); + } + + public bool IsReusable { + get { return true; } + } + + private IHttpGateway _gateway; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/GlobalApplication.cs b/slips/src/app/Marina/Web/GlobalApplication.cs new file mode 100644 index 0000000..452587f --- /dev/null +++ b/slips/src/app/Marina/Web/GlobalApplication.cs @@ -0,0 +1,17 @@ +using System; +using System.Web; +using Marina.Infrastructure.Logging.Interfaces; +using Marina.Task; + +namespace Marina.Web { + public class GlobalApplication : HttpApplication { + public void Application_Start( object sender, EventArgs e ) { + ApplicationStartupTask.ApplicationBegin( ); + Log.For(this).Informational("Application Startup completed"); + } + + public void Application_Error( object sender, EventArgs e ) { + Log.For( this ).Informational( "Unhandled error occurred" ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/AvailableSlipsHandler.cs b/slips/src/app/Marina/Web/Handlers/AvailableSlipsHandler.cs new file mode 100644 index 0000000..a8c69d5 --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/AvailableSlipsHandler.cs @@ -0,0 +1,7 @@ +using Marina.Web.Commands; + +namespace Marina.Web.Handlers { + public class AvailableSlipsHandler : RequestHandler { + public AvailableSlipsHandler() : base( For( CommandNames.AvailableSlips ), new AvailableSlipsCommand( ) ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/Dispatcher.cs b/slips/src/app/Marina/Web/Handlers/Dispatcher.cs new file mode 100644 index 0000000..af1bd84 --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/Dispatcher.cs @@ -0,0 +1,24 @@ +using Marina.Infrastructure; +using Marina.Web.Commands; +using Marina.Web.Http; + +namespace Marina.Web.Handlers { + public class Dispatcher { + private readonly IRegisteredHandlers handlers; + + public Dispatcher() : this( new RegisteredHandlers( ) ) {} + + public Dispatcher( IRegisteredHandlers handlers ) { + this.handlers = handlers; + } + + public ICommand FindFor( IHttpGateway request ) { + foreach ( IRequestHandler handler in handlers.All( ) ) { + if ( handler.IsSatisfiedBy( request ) ) { + return handler; + } + } + return new RedirectCommand( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/IRegisteredHandlers.cs b/slips/src/app/Marina/Web/Handlers/IRegisteredHandlers.cs new file mode 100644 index 0000000..3049638 --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/IRegisteredHandlers.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Marina.Web.Handlers; + +namespace Marina.Web.Handlers { + public interface IRegisteredHandlers { + IEnumerable< IRequestHandler > All( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/IRequestHandler.cs b/slips/src/app/Marina/Web/Handlers/IRequestHandler.cs new file mode 100644 index 0000000..e33552e --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/IRequestHandler.cs @@ -0,0 +1,6 @@ +using Marina.Infrastructure; +using Marina.Web.Http; + +namespace Marina.Web.Handlers { + public interface IRequestHandler : ISpecification< IHttpGateway >, ICommand {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/RegisteredHandlers.cs b/slips/src/app/Marina/Web/Handlers/RegisteredHandlers.cs new file mode 100644 index 0000000..1f6395f --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/RegisteredHandlers.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Marina.Web.Handlers { + public class RegisteredHandlers : IRegisteredHandlers { + public IEnumerable< IRequestHandler > All() { + yield return new AvailableSlipsHandler( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/RequestHandler.cs b/slips/src/app/Marina/Web/Handlers/RequestHandler.cs new file mode 100644 index 0000000..a2162ef --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/RequestHandler.cs @@ -0,0 +1,26 @@ +using Marina.Infrastructure; +using Marina.Web.Http; + +namespace Marina.Web.Handlers { + public class RequestHandler : IRequestHandler { + public RequestHandler( ISpecification< IHttpGateway > specification, ICommand command ) { + _specification = specification; + _command = command; + } + + public bool IsSatisfiedBy( IHttpGateway item ) { + return _specification.IsSatisfiedBy( item ); + } + + public void Execute() { + _command.Execute( ); + } + + public static ISpecification< IHttpGateway > For( string commandName ) { + return new RequestHandlerSpecification( commandName ); + } + + private readonly ISpecification< IHttpGateway > _specification; + private readonly ICommand _command; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Handlers/RequestHandlerSpecification.cs b/slips/src/app/Marina/Web/Handlers/RequestHandlerSpecification.cs new file mode 100644 index 0000000..51dd893 --- /dev/null +++ b/slips/src/app/Marina/Web/Handlers/RequestHandlerSpecification.cs @@ -0,0 +1,16 @@ +using Marina.Infrastructure; +using Marina.Web.Http; + +namespace Marina.Web.Handlers { + public class RequestHandlerSpecification : ISpecification< IHttpGateway > { + private readonly string _commandName; + + public RequestHandlerSpecification( string commandName ) { + _commandName = commandName; + } + + public bool IsSatisfiedBy( IHttpGateway item ) { + return item.Destination( ).Contains( _commandName ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Http/HttpGateway.cs b/slips/src/app/Marina/Web/Http/HttpGateway.cs new file mode 100644 index 0000000..4b91315 --- /dev/null +++ b/slips/src/app/Marina/Web/Http/HttpGateway.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Specialized; +using System.Security.Principal; +using System.Web; +using System.Web.Security; +using Marina.Infrastructure.Logging.Interfaces; +using Marina.Presentation; +using Marina.Web.Views; + +namespace Marina.Web.Http { + public class HttpGateway : IHttpGateway { + public HttpGateway( IHttpContext context ) { + _context = context; + } + + public string Destination() { + return _context.Request.RawUrl; + } + + public void RedirectTo( IView view ) { + try { + _context.Server.Transfer( view.Name( ) ); + } + catch ( Exception ex ) { + Log.For( this ).CriticalError( ex.StackTrace ); + } + } + + public void AddAuthenticationCookieFor( string username, long customerId ) { + AddCookieToResponse( username, customerId ); + BindPrincipalToCurrentThread( username ); + } + + public T ParsePayloadFor< T >( PayloadKey< T > key ) { + return key.ParseFrom( Payload( ) ); + } + + public bool ContainsPayload< T >( PayloadKey< T > key ) { + try { + ParsePayloadFor( key ); + return true; + } + catch ( PayloadKeyNotFoundException ) { + return false; + } + } + + private NameValueCollection Payload() { + return new NameValueCollection( _context.Request.Params ); + } + + private void BindPrincipalToCurrentThread( string username ) { + _context.User = new GenericPrincipal( new GenericIdentity( username ), new string[] {"Customer"} ); + } + + private void AddCookieToResponse( string username, long customerId ) { + FormsAuthenticationTicket ticket = + new FormsAuthenticationTicket( 1, username, DateTime.Now, DateTime.Now.AddMinutes( 20 ), false, + customerId.ToString( ) ); + + _context.Response.Cookies.Add( CreateCookieFrom( ticket ) ); + _context.Response.Cookies.Add( new HttpCookie( PayloadKeys.CustomerId, customerId.ToString( ) ) ); + } + + private HttpCookie CreateCookieFrom( FormsAuthenticationTicket ticket ) { + return new HttpCookie( FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt( ticket ) ); + } + + private IHttpContext _context; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Http/IHttpGateway.cs b/slips/src/app/Marina/Web/Http/IHttpGateway.cs new file mode 100644 index 0000000..93164ad --- /dev/null +++ b/slips/src/app/Marina/Web/Http/IHttpGateway.cs @@ -0,0 +1,16 @@ +using Marina.Presentation; +using Marina.Web.Views; + +namespace Marina.Web.Http { + public interface IHttpGateway { + string Destination(); + + void RedirectTo( IView view ); + + void AddAuthenticationCookieFor( string username, long customerId ); + + bool ContainsPayload< T >( PayloadKey< T > key ); + + T ParsePayloadFor< T >( PayloadKey< T > key ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/IHttpContext.cs b/slips/src/app/Marina/Web/IHttpContext.cs new file mode 100644 index 0000000..186b8c4 --- /dev/null +++ b/slips/src/app/Marina/Web/IHttpContext.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections; +using System.Security.Principal; +using System.Web; +using System.Web.Caching; +using System.Web.Profile; +using System.Web.SessionState; + +namespace Marina.Web { + public interface IHttpContext { + void AddError( Exception errorInfo ); + + void ClearError( ); + + object GetSection( string sectionName ); + + void RewritePath( string path ); + + void RewritePath( string path, bool rebaseClientPath ); + + void RewritePath( string filePath, string pathInfo, string queryString ); + + void RewritePath( string filePath, string pathInfo, string queryString, bool setClientFilePath ); + + HttpApplication ApplicationInstance { get; set; } + + HttpApplicationState Application { get; } + + IHttpHandler Handler { get; set; } + + IHttpHandler PreviousHandler { get; } + + IHttpHandler CurrentHandler { get; } + + HttpRequest Request { get; } + + HttpResponse Response { get; } + + TraceContext Trace { get; } + + IDictionary Items { get; } + + HttpSessionState Session { get; } + + HttpServerUtility Server { get; } + + Exception Error { get; } + + Exception[] AllErrors { get; } + + IPrincipal User { get; set; } + + ProfileBase Profile { get; } + + bool SkipAuthorization { get; set; } + + bool IsDebuggingEnabled { get; } + + bool IsCustomErrorEnabled { get; } + + DateTime Timestamp { get; } + + Cache Cache { get; } + + RequestNotification CurrentNotification { get; } + + bool IsPostNotification { get; } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/IHttpRequest.cs b/slips/src/app/Marina/Web/IHttpRequest.cs new file mode 100644 index 0000000..be92c04 --- /dev/null +++ b/slips/src/app/Marina/Web/IHttpRequest.cs @@ -0,0 +1,7 @@ +using Marina.Presentation; + +namespace Marina.Web { + public interface IHttpRequest { + T ParsePayloadFor< T >( PayloadKey< T > key ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Redirect.cs b/slips/src/app/Marina/Web/Redirect.cs new file mode 100644 index 0000000..de4a5fe --- /dev/null +++ b/slips/src/app/Marina/Web/Redirect.cs @@ -0,0 +1,10 @@ +using System.Web; +using Marina.Web.Views; + +namespace Marina.Web { + public class Redirect { + public static void To( IView page ) { + HttpContext.Current.Server.Transfer( page.Name( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/AuthenticationServices.asmx b/slips/src/app/Marina/Web/Services/AuthenticationServices.asmx new file mode 100644 index 0000000..773ace4 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/AuthenticationServices.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="AuthenticationWebServices.cs" Class="Marina.Web.Services.AuthenticationWebServices" %> \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/AuthenticationWebServices.cs b/slips/src/app/Marina/Web/Services/AuthenticationWebServices.cs new file mode 100644 index 0000000..f4002f6 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/AuthenticationWebServices.cs @@ -0,0 +1,21 @@ +using System.Web.Services; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task; + +namespace Marina.Web.Services { + public class AuthenticationWebServices : IAuthenticationTask { + public AuthenticationWebServices() : this( Resolve.DependencyFor< IAuthenticationTask >( ) ) {} + + public AuthenticationWebServices( IAuthenticationTask realTask ) { + this.realTask = realTask; + } + + [WebMethod] + public DisplayResponseLineDTO AuthenticateUserUsing( LoginCredentialsDTO credentials ) { + return realTask.AuthenticateUserUsing( credentials ); + } + + private readonly IAuthenticationTask realTask; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/CatalogServices.asmx b/slips/src/app/Marina/Web/Services/CatalogServices.asmx new file mode 100644 index 0000000..67943dc --- /dev/null +++ b/slips/src/app/Marina/Web/Services/CatalogServices.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="CatalogWebServices.cs" Class="Marina.Web.Services.CatalogWebServices" %> \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/CatalogWebServices.cs b/slips/src/app/Marina/Web/Services/CatalogWebServices.cs new file mode 100644 index 0000000..6982cdd --- /dev/null +++ b/slips/src/app/Marina/Web/Services/CatalogWebServices.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Web.Services; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task; + +namespace Marina.Web.Services { + public class CatalogWebServices { + public CatalogWebServices() : this( Resolve.DependencyFor< ICatalogTasks >( ) ) {} + + public CatalogWebServices( ICatalogTasks underlyingTask ) { + _underlyingTask = underlyingTask; + } + + public IEnumerable< SlipDisplayDTO > GetAvailableSlipsForDockBy( long dockId ) { + return _underlyingTask.GetAvailableSlipsForDockBy( dockId ); + } + + [WebMethod] + public DockDisplayDTO GetDockInformationBy( long dockId ) { + return _underlyingTask.GetDockInformationBy( dockId ); + } + + public IEnumerable< SlipDisplayDTO > GetAllAvailableSlips() { + return _underlyingTask.GetAllAvailableSlips( ); + } + + [WebMethod] + public SlipDisplayDTO FindSlipBy( long slipId ) { + return _underlyingTask.FindSlipBy( slipId ); + } + + private readonly ICatalogTasks _underlyingTask; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/LeaseServices.asmx b/slips/src/app/Marina/Web/Services/LeaseServices.asmx new file mode 100644 index 0000000..648db51 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/LeaseServices.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="LeaseWebServices.cs" Class="Marina.Web.Services.LeaseWebServices" %> \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/LeaseWebServices.cs b/slips/src/app/Marina/Web/Services/LeaseWebServices.cs new file mode 100644 index 0000000..b09cc76 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/LeaseWebServices.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Web.Services; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task; + +namespace Marina.Web.Services { + public class LeaseWebServices { + public LeaseWebServices() : this( Resolve.DependencyFor< ILeaseTasks >( ) ) {} + + public LeaseWebServices( ILeaseTasks underlyingTask ) { + _underlyingTask = underlyingTask; + } + + public IEnumerable< DisplayLeaseDTO > FindAllLeasesFor( long customerId ) { + return _underlyingTask.FindAllLeasesFor( customerId ); + } + + [WebMethod] + public DisplayResponseLineDTO RequestLeaseUsing( SubmitLeaseRequestDTO request ) { + return _underlyingTask.RequestLeaseUsing( request ); + } + + private readonly ILeaseTasks _underlyingTask; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/RegistrationServices.asmx b/slips/src/app/Marina/Web/Services/RegistrationServices.asmx new file mode 100644 index 0000000..364b737 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/RegistrationServices.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="RegistrationWebServices.cs" Class="Marina.Web.Services.RegistrationWebServices" %> \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Services/RegistrationWebServices.cs b/slips/src/app/Marina/Web/Services/RegistrationWebServices.cs new file mode 100644 index 0000000..ac98fe5 --- /dev/null +++ b/slips/src/app/Marina/Web/Services/RegistrationWebServices.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using System.Web.Services; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Task; + +namespace Marina.Web.Services { + public class RegistrationWebServices { + public RegistrationWebServices() : this( Resolve.DependencyFor< IRegistrationTasks >( ) ) {} + + public RegistrationWebServices( IRegistrationTasks underlyingTask ) { + _underlyingTask = underlyingTask; + } + + public IEnumerable< DisplayResponseLineDTO > RegisterNew( RegisterCustomerDTO customer ) { + return _underlyingTask.RegisterNew( customer ); + } + + public IEnumerable< DisplayResponseLineDTO > AddNewBoatUsing( BoatRegistrationDTO boat ) { + return _underlyingTask.AddNewBoatUsing( boat ); + } + + [WebMethod] + public CustomerRegistrationDisplayDTO LoadRegistrationFor( long customerId ) { + return _underlyingTask.LoadRegistrationFor( customerId ); + } + + public IEnumerable< DisplayResponseLineDTO > UpdateRegistrationFor( UpdateCustomerRegistrationDTO registration ) { + return _underlyingTask.UpdateRegistrationFor( registration ); + } + + public IEnumerable< BoatRegistrationDTO > AllBoatsFor( long customerId ) { + return _underlyingTask.AllBoatsFor( customerId ); + } + + private readonly IRegistrationTasks _underlyingTask; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/UnhandledExceptionsHttpModule.cs b/slips/src/app/Marina/Web/UnhandledExceptionsHttpModule.cs new file mode 100644 index 0000000..d2267f2 --- /dev/null +++ b/slips/src/app/Marina/Web/UnhandledExceptionsHttpModule.cs @@ -0,0 +1,19 @@ +using System; +using System.Web; +using Marina.Infrastructure.Logging.Interfaces; +using Marina.Web.Views; + +namespace Marina.Web { + public class UnhandledExceptionsHttpModule : IHttpModule { + public void Init( HttpApplication context ) { + context.Error += delegate { + foreach ( Exception exception in context.Context.AllErrors ) { + Log.For( this ).CriticalError( exception.ToString( ) ); + } + Redirect.To( WebViews.Login ); + }; + } + + public void Dispose() {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/IView.cs b/slips/src/app/Marina/Web/Views/IView.cs new file mode 100644 index 0000000..55c1595 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/IView.cs @@ -0,0 +1,7 @@ +namespace Marina.Web.Views { + public interface IView { + string Name( ); + + void Render( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/IViewLuggageTicket.cs b/slips/src/app/Marina/Web/Views/IViewLuggageTicket.cs new file mode 100644 index 0000000..231a008 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/IViewLuggageTicket.cs @@ -0,0 +1,3 @@ +namespace Marina.Web.Views { + public interface IViewLuggageTicket< T > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/IViewLuggageTransporter.cs b/slips/src/app/Marina/Web/Views/IViewLuggageTransporter.cs new file mode 100644 index 0000000..7256f86 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/IViewLuggageTransporter.cs @@ -0,0 +1,7 @@ +namespace Marina.Web.Views { + public interface IViewLuggageTransporter< T > { + void Add( T value ); + + T Value( ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/IWebView.cs b/slips/src/app/Marina/Web/Views/IWebView.cs new file mode 100644 index 0000000..52af842 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/IWebView.cs @@ -0,0 +1,5 @@ +namespace Marina.Web.Views { + public interface IWebView< T > : IView { + void AddToBag( T slips ); + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/Pages/AvailableSlipsWebView.cs b/slips/src/app/Marina/Web/Views/Pages/AvailableSlipsWebView.cs new file mode 100644 index 0000000..bf930a7 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/Pages/AvailableSlipsWebView.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Marina.Infrastructure.Container; +using Marina.Presentation.DTO; +using Marina.Web.Http; + +namespace Marina.Web.Views.Pages { + public class AvailableSlipsWebView : WebView< IEnumerable< SlipDisplayDTO > >, IAvailableSlipsWebView { + public AvailableSlipsWebView() + : this( + ViewLuggage.TransporterFor( ViewLuggageTickets.AvailableSlips ), + Resolve.DependencyFor< IHttpGateway >( ) ) {} + + public AvailableSlipsWebView( IViewLuggageTransporter< IEnumerable< SlipDisplayDTO > > viewBag, IHttpGateway gateway ) + : base( "AvailableSlips.aspx", viewBag, gateway ) {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/Pages/IAvailableSlipsWebView.cs b/slips/src/app/Marina/Web/Views/Pages/IAvailableSlipsWebView.cs new file mode 100644 index 0000000..83535da --- /dev/null +++ b/slips/src/app/Marina/Web/Views/Pages/IAvailableSlipsWebView.cs @@ -0,0 +1,6 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Web.Views.Pages { + public interface IAvailableSlipsWebView : IWebView< IEnumerable< SlipDisplayDTO > > {} +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/View.cs b/slips/src/app/Marina/Web/Views/View.cs new file mode 100644 index 0000000..9f22d8d --- /dev/null +++ b/slips/src/app/Marina/Web/Views/View.cs @@ -0,0 +1,28 @@ +using Marina.Infrastructure.Container; +using Marina.Web.Http; + +namespace Marina.Web.Views { + public class View : IView { + public View( string name ) : this( name, Resolve.DependencyFor< IHttpGateway >( ) ) {} + + public View( string name, IHttpGateway gateway ) { + _name = name; + _gateway = gateway; + } + + public string Name() { + return _name; + } + + public void Render() { + _gateway.RedirectTo( this ); + } + + public override string ToString() { + return Name( ); + } + + private readonly string _name; + private readonly IHttpGateway _gateway; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/ViewLuggage.cs b/slips/src/app/Marina/Web/Views/ViewLuggage.cs new file mode 100644 index 0000000..7e9580d --- /dev/null +++ b/slips/src/app/Marina/Web/Views/ViewLuggage.cs @@ -0,0 +1,11 @@ +namespace Marina.Web.Views { + public class ViewLuggage { + public static IViewLuggageTransporter< T > TransporterFor< T >( IViewLuggageTicket< T > ticket ) { + return new ViewLuggageTransporter< T >( ticket ); + } + + public static T ClaimFor< T >( IViewLuggageTicket< T > ticket ) { + return new ViewLuggageTransporter< T >( ticket ).Value( ); + } + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/ViewLuggageTickets.cs b/slips/src/app/Marina/Web/Views/ViewLuggageTickets.cs new file mode 100644 index 0000000..3c30368 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/ViewLuggageTickets.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; + +namespace Marina.Web.Views { + public class ViewLuggageTickets { + public static IViewLuggageTicket< IEnumerable< SlipDisplayDTO > > AvailableSlips = + new ViewBagItem< IEnumerable< SlipDisplayDTO > >( ); + + public static IViewLuggageTicket< IEnumerable< DisplayResponseLineDTO > > ResponseMessages = + new ViewBagItem< IEnumerable< DisplayResponseLineDTO > >( ); + + private class ViewBagItem< T > : IViewLuggageTicket< T > {} + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/ViewLuggageTransporter.cs b/slips/src/app/Marina/Web/Views/ViewLuggageTransporter.cs new file mode 100644 index 0000000..a86c734 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/ViewLuggageTransporter.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Web; + +namespace Marina.Web.Views { + public class ViewLuggageTransporter< Luggage > : IViewLuggageTransporter< Luggage > { + public ViewLuggageTransporter( IViewLuggageTicket< Luggage > key ) : this( key, HttpContext.Current.Items ) {} + + private ViewLuggageTransporter( IViewLuggageTicket< Luggage > key, IDictionary items ) { + _ticket = key; + _items = items; + } + + public Luggage Value() { + foreach ( DictionaryEntry entry in _items ) { + if ( entry.Value is Luggage ) { + return ( Luggage )entry.Value; + } + //if ( entry.Key.Equals( _ticket ) ) { + // return ( Luggage )entry.Value; + //} + } + return default( Luggage ); + } + + public void Add( Luggage value ) { + _items.Add( _ticket, value ); + } + + private readonly IViewLuggageTicket< Luggage > _ticket; + private readonly IDictionary _items; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/WebView.cs b/slips/src/app/Marina/Web/Views/WebView.cs new file mode 100644 index 0000000..f517479 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/WebView.cs @@ -0,0 +1,27 @@ +using Marina.Web.Http; + +namespace Marina.Web.Views { + public class WebView< T > : IWebView< T > { + public WebView( string name, IViewLuggageTransporter< T > viewBag, IHttpGateway gateway ) { + this.name = name; + this.gateway = gateway; + this.viewBag = viewBag; + } + + public string Name() { + return name; + } + + public void Render() { + gateway.RedirectTo( this ); + } + + public void AddToBag( T slips ) { + viewBag.Add( slips ); + } + + private readonly string name; + private readonly IHttpGateway gateway; + private readonly IViewLuggageTransporter< T > viewBag; + } +} \ No newline at end of file diff --git a/slips/src/app/Marina/Web/Views/WebViews.cs b/slips/src/app/Marina/Web/Views/WebViews.cs new file mode 100644 index 0000000..6431606 --- /dev/null +++ b/slips/src/app/Marina/Web/Views/WebViews.cs @@ -0,0 +1,18 @@ +using Marina.Web.Views.Pages; + +namespace Marina.Web.Views { + public class WebViews { + public static readonly IAvailableSlipsWebView AvailableSlips = new AvailableSlipsWebView( ); + + public static readonly IView ContactUs = new View( "ContactUs.aspx" ); + public static readonly IView Default = new View( "Default.aspx" ); + public static readonly IView DockView = new View( "DockView.aspx" ); + public static readonly IView Login = new View( "Login.aspx" ); + public static readonly IView RegisterBoat = new View( "RegisterBoat.aspx" ); + public static readonly IView Registration = new View( "Registration.aspx" ); + public static readonly IView UpdateCustomerRegistration = new View( "UpdateCustomerRegistration.aspx" ); + public static readonly IView ViewRegisteredBoats = new View( "ViewRegisteredBoats.aspx" ); + public static readonly IView CurrentLeases = new View( "CurrentLeases.aspx" ); + public static readonly IView LeaseSlip = new View( "LeaseSlip.aspx" ); + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/BoatDataMapperTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/BoatDataMapperTest.cs new file mode 100644 index 0000000..20b881f --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/BoatDataMapperTest.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using Marina.DataAccess.DataMappers; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Test.Integration.DataAccess.Utility; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Mappers { + [TestFixture] + public class BoatDataMapperTest { + public IBoatDataMapper CreateSUT() { + return new BoatDataMapper( ); + } + + [Test] + [RunInRealContainer] + [RollBack] + public void Should_return_3_boats() { + long customerId = CustomerMother.CreateCustomerRecord( ); + + BoatMother.AddBoatsFor( customerId ); + + IRichList< IBoat > boats = ListFactory.From( CreateSUT( ).AllBoatsFor( customerId ) ); + Assert.AreEqual( 3, boats.Count ); + } + + [Test] + [RunInRealContainer] + [RollBack] + public void Should_be_able_to_insert_new_boats_for_customer() { + IBoat firstBoat = new Boat( "reg1", "TOYOTA", new DateTime( 2001, 1, 1 ), 100 ); + IBoat secondBoat = new Boat( "reg2", "YAMAHA", new DateTime( 2005, 1, 1 ), 200 ); + + IList< IBoat > boats = new List< IBoat >( ); + boats.Add( firstBoat ); + boats.Add( secondBoat ); + + long customerId = CustomerMother.CreateCustomerRecord( ); + IBoatDataMapper mapper = CreateSUT( ); + mapper.Insert( boats, customerId ); + + IRichList< IBoat > insertedBoats = ListFactory.From( mapper.AllBoatsFor( customerId ) ); + Assert.AreEqual( 2, insertedBoats.Count ); + Assert.IsTrue( insertedBoats.Contains( firstBoat ) ); + Assert.IsTrue( insertedBoats.Contains( secondBoat ) ); + } + + [Test] + [RollBack] + [RunInRealContainer] + public void Should_insert_new_boats_for_customer() { + long customerId = CustomerMother.CreateCustomerRecord( ); + IList< IBoat > boats = CreateBoats( ); + + IBoatDataMapper mapper = CreateSUT( ); + mapper.Insert( boats, customerId ); + + IBoat thirdBoat = new Boat( "reg3", "HONDA", new DateTime( 1999, 1, 1 ), 300 ); + boats.Add( thirdBoat ); + + mapper.Update( boats, customerId ); + + IRichList< IBoat > insertedBoats = ListFactory.From( mapper.AllBoatsFor( customerId ) ); + Assert.AreEqual( 3, insertedBoats.Count ); + Assert.IsTrue( insertedBoats.Contains( thirdBoat ) ); + } + + private IList< IBoat > CreateBoats() { + IList< IBoat > boats = new List< IBoat >( ); + boats.Add( new Boat( "reg1", "TOYOTA", new DateTime( 2001, 1, 1 ), 100 ) ); + boats.Add( new Boat( "reg2", "YAMAHA", new DateTime( 2005, 1, 1 ), 200 ) ); + return boats; + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/CustomerDataMapperTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/CustomerDataMapperTest.cs new file mode 100644 index 0000000..ef32eac --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/CustomerDataMapperTest.cs @@ -0,0 +1,25 @@ +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; +using Marina.Test.Integration.DataAccess.Utility; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Mappers { + public class CustomerDataMapperTest { + public ICustomerDataMapper CreateSUT() { + return new CustomerDataMapper( ); + } + + [Test] + [RollBack] + [RunInRealContainer] + public void Should_be_able_to_find_customer_by_username() { + string username = "mokhan"; + long customerId = CustomerMother.CreateCustomerRecordWith( username ); + + ICustomer foundCustomer = CreateSUT( ).FindBy( username ); + Assert.AreEqual( customerId, foundCustomer.ID( ) ); + Assert.AreEqual( username, foundCustomer.Registration( ).Username( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/LeaseDataMapperTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/LeaseDataMapperTest.cs new file mode 100644 index 0000000..c08577e --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/LeaseDataMapperTest.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using Marina.DataAccess.DataMappers; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Test.Integration.DataAccess.Utility; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Mappers { + [TestFixture] + public class LeaseDataMapperTest { + public ILeaseDataMapper CreateSUT() { + return new LeaseDataMapper( ); + } + + [Test] + [RollBack] + [RunInRealContainer] + public void Should_return_all_leases_for_a_specific_customer() { + long customerId = CustomerMother.CreateCustomerRecord( ); + LeaseMother.CreateLeaseFor( customerId ); + + IRichList< ISlipLease > leasesForCustomer = ListFactory.From( CreateSUT( ).AllLeasesFor( customerId ) ); + Assert.AreEqual( 1, leasesForCustomer.Count ); + } + + [Test] + [RollBack] + [RunInRealContainer] + public void Should_be_able_to_insert_new_leases_for_customer() { + long customerId = CustomerMother.CreateCustomerRecord( ); + + IList< ISlipLease > leases = new List< ISlipLease >( ); + leases.Add( new SlipLease( new Slip( 1000, null, 100, 100, true ), LeaseDurations.Daily ) ); + + ILeaseDataMapper mapper = CreateSUT( ); + mapper.Insert( leases, customerId ); + + IRichList< ISlipLease > foundLeases = ListFactory.From( mapper.AllLeasesFor( customerId ) ); + Assert.AreEqual( 1, foundLeases.Count ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/RegistrationDataMapperTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/RegistrationDataMapperTest.cs new file mode 100644 index 0000000..d4beabf --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Mappers/RegistrationDataMapperTest.cs @@ -0,0 +1,70 @@ +using Marina.DataAccess; +using Marina.DataAccess.Builders; +using Marina.DataAccess.DataMappers; +using Marina.DataAccess.Schemas; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure.Container; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Mappers { + [TestFixture] + public class RegistrationDataMapperTest { + public IRegistrationDataMapper CreateSUT() { + return new RegistrationDataMapper( ); + } + + [RunInRealContainer] + [Test] + public void Should_be_able_to_find_john() { + int customerId = 1000; + IRegistration registration = CreateSUT( ).For( customerId ); + Assert.AreEqual( "John", registration.FirstName( ) ); + Assert.AreEqual( "Doe", registration.LastName( ) ); + Assert.AreEqual( "555-545-1212", registration.PhoneNumber( ) ); + Assert.AreEqual( "Phoenix", registration.City( ) ); + } + + [RunInRealContainer] + [Test] + [RollBack] + public void Should_be_able_to_insert_new_registration_for_customer() { + IRegistrationDataMapper mapper = CreateSUT( ); + long customerId = CreateCustomerRecord( ); + IRegistration expectedRegistration = + new CustomerRegistration( "mokhan", "password", "mo", "khan", "4036813389", "calgary" ); + + mapper.Insert( expectedRegistration, customerId ); + IRegistration actualRegistration = mapper.For( customerId ); + Assert.AreEqual( expectedRegistration, actualRegistration ); + } + + [RunInRealContainer] + [Test] + [RollBack] + public void Should_be_able_to_update_record() { + IRegistrationDataMapper mapper = CreateSUT( ); + long customerId = CreateCustomerRecord( ); + IRegistration firstRegistration = + new CustomerRegistration( "mokhan", "password", "mo", "khan", "4036813389", "calgary" ); + IRegistration expectedRegistration = + new CustomerRegistration( "khanmo", "wordpass", "om", "ankh", "1338940368", "garycal" ); + + mapper.Insert( firstRegistration, customerId ); + mapper.Update( expectedRegistration, customerId ); + + IRegistration actualRegistration = mapper.For( customerId ); + Assert.AreEqual( expectedRegistration, actualRegistration ); + } + + private long CreateCustomerRecord() { + IQuery query = DatabaseInsert.Into( CustomerTable.TableName ) + .AddValue( CustomerTable.FirstName, string.Empty ) + .AddValue( CustomerTable.LastName, string.Empty ) + .AddValue( CustomerTable.Phone, string.Empty ) + .AddValue( CustomerTable.City, string.Empty ).Build( ); + return Resolve.DependencyFor< IDatabaseGateway >( ).ExecuteScalar( query ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/DockRepositoryTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/DockRepositoryTest.cs new file mode 100644 index 0000000..7612f50 --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/DockRepositoryTest.cs @@ -0,0 +1,24 @@ +using Marina.DataAccess.Repositories; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Repositories { + [TestFixture] + public class DockRepositoryTest { + public IDockRepository CreateSUT() { + return new DockRepository( ); + } + + [RunInRealContainer] + [RowTest] + [Row( 1 )] + [Row( 2 )] + [Row( 3 )] + public void Should_load_dock_by( long dockId ) { + IDock dock = CreateSUT( ).FindBy( dockId ); + Assert.AreEqual( dockId, dock.ID( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/SlipRepositoryTest.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/SlipRepositoryTest.cs new file mode 100644 index 0000000..ab4b907 --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Repositories/SlipRepositoryTest.cs @@ -0,0 +1,32 @@ +using Marina.DataAccess.Repositories; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.DataAccess.Repositories { + [TestFixture] + public class SlipRepositoryTest { + public ISlipsRepository CreateSUT() { + return new SlipsRepository( ); + } + + [RunInRealContainer] + [Test] + public void Should_return_at_least_one_available_slip() { + Assert.IsTrue( ListFactory.From( CreateSUT( ).AllAvailableSlips( ) ).Count > 0 ); + } + + [RunInRealContainer] + [Test] + public void Should_return_at_least_one_available_slip_for_the_dock() { + ISlipsRepository repository = CreateSUT( ); + IDock dock = new Dock( 1, string.Empty, null, null ); + + IRichList< ISlip > slipsFound = ListFactory.From( repository.AllAvailableSlipsFor( dock ) ); + Assert.IsTrue( slipsFound.Count > 0 ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Utility/BoatMother.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/BoatMother.cs new file mode 100644 index 0000000..cb8d7b3 --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/BoatMother.cs @@ -0,0 +1,19 @@ +using Marina.DataAccess; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Infrastructure.Container; + +namespace Marina.Test.Integration.DataAccess.Utility { + public static class BoatMother { + public static void AddBoatsFor( long customerId ) { + IInsertQueryBuilder builder = DatabaseInsert.Into( BoatTable.TableName ) + .AddValue( BoatTable.RegistrationNumber, string.Empty ) + .AddValue( BoatTable.Manufacturer, string.Empty ) + .AddValue( BoatTable.ModelYear, string.Empty ) + .AddValue( BoatTable.Length, string.Empty ) + .AddValue( BoatTable.CustomerID, customerId.ToString( ) ); + + Resolve.DependencyFor< IDatabaseGateway >( ).Execute( builder.Build( ), builder.Build( ), builder.Build( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Utility/CustomerMother.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/CustomerMother.cs new file mode 100644 index 0000000..923528a --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/CustomerMother.cs @@ -0,0 +1,34 @@ +using Marina.DataAccess; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Infrastructure.Container; + +namespace Marina.Test.Integration.DataAccess.Utility { + public static class CustomerMother { + public static long CreateCustomerRecord() { + IInsertQueryBuilder builder = DatabaseInsert.Into( CustomerTable.TableName ) + .AddValue( CustomerTable.FirstName, string.Empty ) + .AddValue( CustomerTable.LastName, string.Empty ) + .AddValue( CustomerTable.Phone, string.Empty ) + .AddValue( CustomerTable.City, string.Empty ); + return Resolve.DependencyFor< IDatabaseGateway >( ).ExecuteScalar( builder.Build( ) ); + } + + public static long CreateCustomerRecordWith( string username ) { + IInsertQueryBuilder builder = DatabaseInsert.Into( CustomerTable.TableName ) + .AddValue( CustomerTable.FirstName, string.Empty ) + .AddValue( CustomerTable.LastName, string.Empty ) + .AddValue( CustomerTable.Phone, string.Empty ) + .AddValue( CustomerTable.City, string.Empty ); + long customerId = Resolve.DependencyFor< IDatabaseGateway >( ).ExecuteScalar( builder.Build( ) ); + + IQuery insertToAuthTable = DatabaseInsert.Into( AuthorizationTable.TableName ) + .AddValue( AuthorizationTable.UserName, username ) + .AddValue( AuthorizationTable.Password, string.Empty ) + .Build( ); + + Resolve.DependencyFor< IDatabaseGateway >( ).Execute( insertToAuthTable ); + return customerId; + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Utility/LeaseMother.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/LeaseMother.cs new file mode 100644 index 0000000..1c8b2ec --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/LeaseMother.cs @@ -0,0 +1,21 @@ +using System; +using Marina.DataAccess; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Infrastructure.Container; + +namespace Marina.Test.Integration.DataAccess.Utility { + public static class LeaseMother { + public static void CreateLeaseFor( long customerId ) { + IQuery query = DatabaseInsert + .Into( LeaseTable.TableName ) + .AddValue( LeaseTable.CustomerID, customerId ) + .AddValue( LeaseTable.EndDate, DateTime.Now.AddDays( 1 ) ) + .AddValue( LeaseTable.LeaseTypeID, 1 ) + .AddValue( LeaseTable.SlipID, SlipMother.CreateSlip( ) ) + .AddValue( LeaseTable.StartDate, DateTime.Now ).Build( ); + + Resolve.DependencyFor< IDatabaseGateway >( ).Execute( query ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/DataAccess/Utility/SlipMother.cs b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/SlipMother.cs new file mode 100644 index 0000000..51cbecb --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/DataAccess/Utility/SlipMother.cs @@ -0,0 +1,18 @@ +using Marina.DataAccess; +using Marina.DataAccess.Builders; +using Marina.DataAccess.Schemas; +using Marina.Infrastructure.Container; + +namespace Marina.Test.Integration.DataAccess.Utility { + public static class SlipMother { + public static long CreateSlip() { + IQuery query = DatabaseInsert + .Into( SlipTable.TableName ) + .AddValue( SlipTable.DockID, 1 ) + .AddValue( SlipTable.Length, 100 ) + .AddValue( SlipTable.Width, 100 ).Build( ); + + return Resolve.DependencyFor< IDatabaseGateway >( ).ExecuteScalar( query ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Integration/Task/CatalogTasksTest.cs b/slips/src/test/Marina.Test/Integration/Task/CatalogTasksTest.cs new file mode 100644 index 0000000..fc5e09e --- /dev/null +++ b/slips/src/test/Marina.Test/Integration/Task/CatalogTasksTest.cs @@ -0,0 +1,19 @@ +using Marina.Infrastructure; +using Marina.Task; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Integration.Task { + [TestFixture] + public class CatalogTasksTest { + public ICatalogTasks CreateSUT() { + return new CatalogTasks( ); + } + + [RunInRealContainer] + [Test] + public void Should_return_at_least_one_available_slip() { + Assert.IsTrue( ListFactory.From( CreateSUT( ).GetAllAvailableSlips( ) ).Count > 0 ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Marina.Test.csproj b/slips/src/test/Marina.Test/Marina.Test.csproj new file mode 100644 index 0000000..f06e22f --- /dev/null +++ b/slips/src/test/Marina.Test/Marina.Test.csproj @@ -0,0 +1,136 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {D9BCEEBA-F4D1-4057-8070-5EB1640D618D} + Library + Properties + Marina.Test + Marina.Test + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\..\build\lib\log4net\bin\log4net.dll + + + False + ..\..\..\build\tools\mbunit\bin\MbUnit.Framework.dll + + + False + ..\..\..\build\tools\rhino.mocks\bin\Rhino.Mocks.dll + + + + + 3.5 + + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {F9AF658A-2A26-49DE-A964-7A846A8DCC2A} + Marina + + + + + + + + + \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Properties/AssemblyInfo.cs b/slips/src/test/Marina.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1d1a117 --- /dev/null +++ b/slips/src/test/Marina.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Marina.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Marina.Test")] +[assembly: AssemblyCopyright("Copyright © 2007")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("fe5b2656-dda1-4db6-8bd4-e0c467729b9f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseCommandTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseCommandTest.cs new file mode 100644 index 0000000..c08b272 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseCommandTest.cs @@ -0,0 +1,48 @@ +using System.Data; +using Marina.DataAccess; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess { + [TestFixture] + public class DatabaseCommandTest { + private MockRepository _mockery; + private IDbCommand _mockCommand; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockCommand = _mockery.DynamicMock< IDbCommand >( ); + } + + public IDatabaseCommand CreateSUT() { + return new DatabaseCommand( _mockCommand ); + } + + [Test] + public void Should_execute_the_command() { + IDataReader mockReader = _mockery.DynamicMock< IDataReader >( ); + + using ( _mockery.Record( ) ) { + Expect.Call( _mockCommand.ExecuteReader( ) ).Return( mockReader ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).ExecuteQuery( ); + } + } + + [Test] + public void Should_return_a_loaded_data_table() { + IDataReader mockReader = _mockery.DynamicMock< IDataReader >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockCommand.ExecuteReader( ) ).Return( mockReader ); + } + + using ( _mockery.Playback( ) ) { + Assert.IsNotNull( CreateSUT( ).ExecuteQuery( ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConfigurationTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConfigurationTest.cs new file mode 100644 index 0000000..3dc2d1f --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConfigurationTest.cs @@ -0,0 +1,33 @@ +using System.Configuration; +using Marina.DataAccess; +using MbUnit.Framework; + +namespace Marina.Test.Unit.DataAccess { + [TestFixture] + public class DatabaseConfigurationTest { + private ConnectionStringSettings _settings; + + [SetUp] + public void Setup() { + _settings = new ConnectionStringSettings( "ConnectionName", string.Empty, string.Empty ); + } + + public IDatabaseConfiguration CreateSUT() { + return new DatabaseConfiguration( _settings ); + } + + [Test] + public void Should_return_connection_string() { + string connectionString = "MyConnectionString"; + _settings.ConnectionString = connectionString; + Assert.AreEqual( connectionString, CreateSUT( ).ConnectionString( ) ); + } + + [Test] + public void Should_return_the_provider_name() { + string providerName = "MyProvider"; + _settings.ProviderName = providerName; + Assert.AreEqual( providerName, CreateSUT( ).ProviderName( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConnectionTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConnectionTest.cs new file mode 100644 index 0000000..8cd8ec1 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseConnectionTest.cs @@ -0,0 +1,167 @@ +using System.Data; +using Marina.DataAccess; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess { + [TestFixture] + public class DatabaseConnectionTest { + private MockRepository _mockery; + private IDatabaseConfiguration _mockConfiguration; + private IDatabaseProviderFactory _mockProviderFactory; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockConfiguration = _mockery.DynamicMock< IDatabaseConfiguration >( ); + _mockProviderFactory = _mockery.DynamicMock< IDatabaseProviderFactory >( ); + } + + public IDatabaseConnection CreateSUT() { + return new DatabaseConnection( _mockConfiguration, _mockProviderFactory ); + } + + [Test] + public void Should_create_connection_for_provider_name() { + string providerName = "System.Data.SqlClient"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + + Expect.Call( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).CreateCommandFor( "" ); + } + } + + [RowTest] + [Row( "MyConnectionString" )] + [Row( "MyStringOfConnection" )] + [Row( "MyConnectionString3" )] + public void Should_set_the_connections_connection_string_to( string connectionString ) { + string providerName = "System.Data.SqlClient"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + + mockConnection.ConnectionString = connectionString; + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).CreateCommandFor( "" ); + } + } + + [Test] + public void Should_create_a_command_object_using_the_connection() { + string providerName = "System.Data.SqlClient"; + string connectionString = "MyConnectionString"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + IDbCommand mockCommand = _mockery.DynamicMock< IDbCommand >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + + Expect.Call( mockConnection.CreateCommand( ) ).Return( mockCommand ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).CreateCommandFor( "" ); + } + } + + [RowTest] + [Row( "Select * From Auctions" )] + [Row( "Select * From Pets" )] + public void Should_set_the_commands_text_and_type( string sqlQuery ) { + string providerName = "System.Data.SqlClient"; + string connectionString = "MyConnectionString"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + IDbCommand mockCommand = _mockery.DynamicMock< IDbCommand >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + SetupResult.For( mockConnection.CreateCommand( ) ).Return( mockCommand ); + + mockCommand.CommandText = sqlQuery; + mockCommand.CommandType = CommandType.Text; + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).CreateCommandFor( sqlQuery ); + } + } + + [Test] + public void Should_return_new_database_command() { + string providerName = "System.Data.SqlClient"; + string connectionString = "MyConnectionString"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + IDbCommand mockCommand = _mockery.DynamicMock< IDbCommand >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + SetupResult.For( mockConnection.CreateCommand( ) ).Return( mockCommand ); + } + + using ( _mockery.Playback( ) ) { + Assert.IsNotNull( CreateSUT( ).CreateCommandFor( "" ) ); + } + } + + [Test] + public void Should_close_connection_when_disposed() { + string providerName = "System.Data.SqlClient"; + string connectionString = "MyConnectionString"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + + mockConnection.Close( ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Dispose( ); + } + } + + [Test] + public void Should_open_connection_when_created() { + string providerName = "System.Data.SqlClient"; + string connectionString = "MyConnectionString"; + + IDbConnection mockConnection = _mockery.DynamicMock< IDbConnection >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConfiguration.ConnectionString( ) ).Return( connectionString ); + SetupResult.For( _mockConfiguration.ProviderName( ) ).Return( providerName ); + SetupResult.For( _mockProviderFactory.CreateConnectionFor( providerName ) ).Return( mockConnection ); + + mockConnection.Open( ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseGatewayTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseGatewayTest.cs new file mode 100644 index 0000000..f53d1ec --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/DatabaseGatewayTest.cs @@ -0,0 +1,91 @@ +using System.Data; +using Marina.DataAccess; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess { + [TestFixture] + public class DatabaseGatewayTest { + private MockRepository _mockery; + private IDatabaseConnectionFactory _mockConnectionFactory; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockConnectionFactory = _mockery.DynamicMock< IDatabaseConnectionFactory >( ); + } + + public IDatabaseGateway CreateSUT() { + return new DatabaseGateway( _mockConnectionFactory ); + } + + [Test] + public void Should_leverage_factory_to_create_a_new_connection() { + IDatabaseConnection mockConnection = _mockery.DynamicMock< IDatabaseConnection >( ); + using ( _mockery.Record( ) ) { + Expect.Call( _mockConnectionFactory.Create( ) ).Return( mockConnection ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).LoadTableUsing( "" ); + } + } + + [Test] + public void Should_create_command_using_database_connection() { + IDatabaseConnection mockConnection = _mockery.DynamicMock< IDatabaseConnection >( ); + IDatabaseCommand mockCommand = _mockery.DynamicMock< IDatabaseCommand >( ); + string sqlQuery = "SELECT * FROM ?"; + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConnectionFactory.Create( ) ).Return( mockConnection ); + Expect.Call( mockConnection.CreateCommandFor( sqlQuery ) ).Return( mockCommand ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).LoadTableUsing( sqlQuery ); + } + } + + [RowTest] + [Row( "SELECT * FROM Cars" )] + [Row( "SELECT * FROM Persons" )] + public void Should_execute_query_on_command( string sqlQuery ) { + IDatabaseConnection mockConnection = _mockery.DynamicMock< IDatabaseConnection >( ); + IDatabaseCommand mockCommand = _mockery.DynamicMock< IDatabaseCommand >( ); + + DataTable table = new DataTable( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConnectionFactory.Create( ) ).Return( mockConnection ); + SetupResult.For( mockConnection.CreateCommandFor( sqlQuery ) ).Return( mockCommand ); + Expect.Call( mockCommand.ExecuteQuery( ) ).Return( table ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( table, CreateSUT( ).LoadTableUsing( sqlQuery ) ); + } + } + + [Test] + public void Should_close_the_connection_after_executing_the_command() { + IDatabaseConnection mockConnection = _mockery.DynamicMock< IDatabaseConnection >( ); + IDatabaseCommand mockCommand = _mockery.DynamicMock< IDatabaseCommand >( ); + string sqlQuery = "SELECT * FROM ?"; + + DataTable table = new DataTable( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockConnectionFactory.Create( ) ).Return( mockConnection ); + SetupResult.For( mockConnection.CreateCommandFor( sqlQuery ) ).Return( mockCommand ); + + using ( _mockery.Ordered( ) ) { + Expect.Call( mockCommand.ExecuteQuery( ) ).Return( table ); + mockConnection.Dispose( ); + } + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).LoadTableUsing( sqlQuery ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/Mappers/CustomerDataMapperTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/Mappers/CustomerDataMapperTest.cs new file mode 100644 index 0000000..81e170b --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/Mappers/CustomerDataMapperTest.cs @@ -0,0 +1,86 @@ +using System.Collections.Generic; +using Marina.DataAccess; +using Marina.DataAccess.DataMappers; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess.Mappers { + [TestFixture] + public class CustomerDataMapperTest { + private MockRepository _mockery; + private IDatabaseGateway _mockGateway; + private IBoatDataMapper _boatMapper; + private ILeaseDataMapper _leaseDataMapper; + private IRegistrationDataMapper _registrationMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockGateway = _mockery.DynamicMock< IDatabaseGateway >( ); + _boatMapper = _mockery.DynamicMock< IBoatDataMapper >( ); + _leaseDataMapper = _mockery.DynamicMock< ILeaseDataMapper >( ); + _registrationMapper = _mockery.DynamicMock< IRegistrationDataMapper >( ); + } + + public ICustomerDataMapper CreateSUT() { + return new CustomerDataMapper( _mockGateway, _boatMapper, _leaseDataMapper, _registrationMapper ); + } + + [Test] + public void Should_leverage_mapper_to_load_customers_boats() { + long customerId = 32; + + IList< IBoat > boats = new List< IBoat >( ); + IBoat boat = _mockery.DynamicMock< IBoat >( ); + boats.Add( boat ); + + using ( _mockery.Record( ) ) { + Expect.Call( _boatMapper.AllBoatsFor( customerId ) ).Return( boats ); + } + + using ( _mockery.Playback( ) ) { + ICustomer customer = CreateSUT( ).FindBy( customerId ); + Assert.AreEqual( 1, ListFactory.From( customer.RegisteredBoats( ) ).Count ); + Assert.IsTrue( ListFactory.From( customer.RegisteredBoats( ) ).Contains( boat ) ); + } + } + + [Test] + public void Should_leverage_mapper_to_load_customer_leases() { + long customerId = 32; + IList< ISlipLease > leases = new List< ISlipLease >( ); + ISlipLease lease = _mockery.DynamicMock< ISlipLease >( ); + leases.Add( lease ); + + using ( _mockery.Record( ) ) { + Expect + .Call( _leaseDataMapper.AllLeasesFor( customerId ) ) + .Return( leases ); + } + + using ( _mockery.Playback( ) ) { + ICustomer customer = CreateSUT( ).FindBy( customerId ); + Assert.AreEqual( 1, ListFactory.From( customer.Leases( ) ).Count ); + Assert.IsTrue( ListFactory.From( customer.Leases( ) ).Contains( lease ) ); + } + } + + [Test] + public void Should_leverage_mapper_to_load_customer_registration() { + long customerId = 59; + + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + + using ( _mockery.Record( ) ) { + Expect.Call( _registrationMapper.For( customerId ) ).Return( registration ); + } + + using ( _mockery.Playback( ) ) { + ICustomer customer = CreateSUT( ).FindBy( customerId ); + Assert.AreEqual( registration, customer.Registration( ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/CustomerRepositoryTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/CustomerRepositoryTest.cs new file mode 100644 index 0000000..afc21fc --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/CustomerRepositoryTest.cs @@ -0,0 +1,142 @@ +using Marina.DataAccess; +using Marina.DataAccess.DataMappers; +using Marina.DataAccess.Repositories; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess.Repositories { + [TestFixture] + public class CustomerRepositoryTest { + private MockRepository _mockery; + private IIdentityMap< ICustomer > _mockIdentityMap; + private ICustomerDataMapper _mockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockIdentityMap = _mockery.DynamicMock< IIdentityMap< ICustomer > >( ); + _mockMapper = _mockery.DynamicMock< ICustomerDataMapper >( ); + } + + public ICustomerRepository CreateSUT() { + return CreateSUT( _mockIdentityMap, _mockMapper ); + } + + private ICustomerRepository CreateSUT( IIdentityMap< ICustomer > identityMap, ICustomerDataMapper mapper ) { + return new CustomerRepository( identityMap, mapper ); + } + + [Test] + public void Should_check_identity_map_to_see_if_customer_is_loaded() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + long customerId = 23455; + + using ( _mockery.Record( ) ) { + Expect.Call( _mockIdentityMap.ContainsObjectWithIdOf( customerId ) ).Return( true ); + Expect.Call( _mockIdentityMap.FindObjectWithIdOf( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( customer, CreateSUT( ).FindBy( customerId ) ); + } + } + + [Test] + public void Should_leverage_mapper_to_load_customer_if_not_in_identity_map() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + long customerId = 23455; + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockIdentityMap.ContainsObjectWithIdOf( customerId ) ).Return( false ); + Expect.Call( _mockMapper.FindBy( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( customer, CreateSUT( ).FindBy( customerId ) ); + } + } + + [Test] + public void Should_add_customer_to_identity_map_after_retrieving_from_mapper() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + long customerId = 23455; + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockIdentityMap.ContainsObjectWithIdOf( customerId ) ).Return( false ); + SetupResult.For( _mockMapper.FindBy( customerId ) ).Return( customer ); + _mockIdentityMap.Add( customer ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( customer, CreateSUT( ).FindBy( customerId ) ); + } + } + + [Test] + public void Should_create_a_new_customer() { + using ( _mockery.Record( ) ) {} + + using ( _mockery.Playback( ) ) { + ICustomer newCustomer = CreateSUT( ).NewCustomer( ); + Assert.AreEqual( -1, newCustomer.ID( ) ); + } + } + + [Test] + public void Should_leverage_mapper_to_insert_new_customer() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + long customerId = 34; + + using ( _mockery.Record( ) ) { + SetupResult.For( customer.ID( ) ).Return( customerId ); + SetupResult.For( _mockIdentityMap.ContainsObjectWithIdOf( customerId ) ).Return( false ); + + _mockMapper.Insert( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Save( customer ); + } + } + + [Test] + public void Should_add_new_customer_to_identity_map_after_insert() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + long customerId = 34; + + using ( _mockery.Record( ) ) { + SetupResult.For( customer.ID( ) ).Return( customerId ); + SetupResult.For( _mockIdentityMap.ContainsObjectWithIdOf( customerId ) ).Return( false ); + using ( _mockery.Ordered( ) ) { + _mockMapper.Insert( customer ); + _mockIdentityMap.Add( customer ); + } + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Save( customer ); + } + } + + [Test] + public void Should_leverage_mapper_to_update_customer() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + IIdentityMap< ICustomer > identityMap = _mockery.CreateMock< IIdentityMap< ICustomer > >( ); + ICustomerDataMapper dataMapper = _mockery.CreateMock< ICustomerDataMapper >( ); + long customerId = 46; + + using ( _mockery.Record( ) ) { + SetupResult.For( customer.ID( ) ).Return( customerId ); + SetupResult.For( identityMap.ContainsObjectWithIdOf( customerId ) ).Return( true ); + + dataMapper.Update( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( identityMap, dataMapper ).Save( customer ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/DockRepositoryTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/DockRepositoryTest.cs new file mode 100644 index 0000000..5d17679 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/DockRepositoryTest.cs @@ -0,0 +1,38 @@ +using Marina.DataAccess.DataMappers; +using Marina.DataAccess.Repositories; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess.Repositories { + [TestFixture] + public class DockRepositoryTest { + private MockRepository _mockery; + private IDockDataMapper mockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + mockMapper = _mockery.DynamicMock< IDockDataMapper >( ); + } + + public IDockRepository CreateSUT() { + return new DockRepository( mockMapper ); + } + + [Test] + public void Should_leverage_mapper_to_retrieve_dock_by_id() { + IDock dock = _mockery.DynamicMock< IDock >( ); + long dockId = 2; + + using ( _mockery.Record( ) ) { + Expect.Call( mockMapper.FindBy( dockId ) ).Return( dock ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( dock, CreateSUT( ).FindBy( dockId ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/IdentityMapTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/IdentityMapTest.cs new file mode 100644 index 0000000..9ff01c8 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/IdentityMapTest.cs @@ -0,0 +1,71 @@ +using Marina.DataAccess; +using Marina.DataAccess.Exceptions; +using Marina.Domain; +using Marina.Domain.Interfaces; +using MbUnit.Framework; + +namespace Marina.Test.Unit.DataAccess.Repositories { + [TestFixture] + public class IdentityMapTest { + public IIdentityMap< IDomainObject > CreateSUT() { + return new IdentityMap< IDomainObject >( ); + } + + // should not be able to add an object with an id of -1 + + [Test] + public void Should_be_able_to_add_a_new_domain_object_to_the_identitiy_map() { + IDomainObject objectThatHasBeenAddedToMap = new DomainObject( 1 ); + IDomainObject objectThatHasNotBeenAddedToMap = new DomainObject( 2 ); + + IIdentityMap< IDomainObject > map = CreateSUT( ); + map.Add( objectThatHasBeenAddedToMap ); + + Assert.IsTrue( map.ContainsObjectWithIdOf( objectThatHasBeenAddedToMap.ID( ) ) ); + Assert.IsFalse( map.ContainsObjectWithIdOf( objectThatHasNotBeenAddedToMap.ID( ) ) ); + } + + [Test] + public void Should_return_true_if_searching_for_a_() { + IIdentityMap< IDomainObject > map = CreateSUT( ); + + int id = 1; + map.Add( new DomainObject( id ) ); + + Assert.IsTrue( map.ContainsObjectWithIdOf( id ) ); + Assert.IsFalse( map.ContainsObjectWithIdOf( 2 ) ); + } + + [Test] + public void Should_be_able_to_retrieve_an_object_that_has_been_added_to_the_map() { + IIdentityMap< IDomainObject > map = CreateSUT( ); + IDomainObject objectAddedToMap = new DomainObject( 1 ); + map.Add( objectAddedToMap ); + + Assert.AreEqual( objectAddedToMap, map.FindObjectWithIdOf( 1 ) ); + } + + [Test] + public void Should_return_null_if_the_object_is_not_in_the_map() { + Assert.IsNull( CreateSUT( ).FindObjectWithIdOf( 1 ) ); + } + + [Test] + [ExpectedException( typeof( ObjectAlreadyAddedToIdentityMapException ) )] + public void Should_not_be_able_to_add_an_object_that_has_already_been_added() { + IIdentityMap< IDomainObject > map = CreateSUT( ); + IDomainObject addedObject = new DomainObject( 1 ); + map.Add( addedObject ); + map.Add( addedObject ); + } + + [Test] + [ExpectedException( typeof( ObjectAlreadyAddedToIdentityMapException ) )] + public void Should_not_be_able_to_add_an_object_with_the_same_id_as_one_that_was_already_added() { + IIdentityMap< IDomainObject > map = CreateSUT( ); + int id = 1; + map.Add( new DomainObject( id ) ); + map.Add( new DomainObject( id ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/SlipRepositoryTest.cs b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/SlipRepositoryTest.cs new file mode 100644 index 0000000..31b5d7a --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/DataAccess/Repositories/SlipRepositoryTest.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using Marina.DataAccess.DataMappers; +using Marina.DataAccess.Repositories; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.DataAccess.Repositories { + [TestFixture] + public class SlipRepositoryTest { + private MockRepository _mockery; + private ISlipDataMapper _mockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockMapper = _mockery.DynamicMock< ISlipDataMapper >( ); + } + + public ISlipsRepository CreateSUT() { + return new SlipsRepository( _mockMapper ); + } + + [Test] + public void Should_leverage_mapper_to_convert_from_table_to_a_domain_object() { + ISlip unleasedSlip = _mockery.DynamicMock< ISlip >( ); + ISlip leasedSlip = _mockery.DynamicMock< ISlip >( ); + + IList< ISlip > slips = new List< ISlip >( ); + slips.Add( unleasedSlip ); + slips.Add( leasedSlip ); + + using ( _mockery.Record( ) ) { + SetupResult.For( unleasedSlip.IsLeased( ) ).Return( false ); + SetupResult.For( leasedSlip.IsLeased( ) ).Return( true ); + + Expect.Call( _mockMapper.AllSlips( ) ).Return( new RichEnumerable< ISlip >( slips ) ); + } + + using ( _mockery.Playback( ) ) { + IRichList< ISlip > foundSlips = ListFactory.From( CreateSUT( ).AllAvailableSlips( ) ); + + Assert.IsTrue( foundSlips.Contains( unleasedSlip ) ); + Assert.IsFalse( foundSlips.Contains( leasedSlip ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/CustomerRegistrationTest.cs b/slips/src/test/Marina.Test/Unit/Domain/CustomerRegistrationTest.cs new file mode 100644 index 0000000..dce27ad --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/CustomerRegistrationTest.cs @@ -0,0 +1,50 @@ +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class CustomerRegistrationTest { + public IRegistration CreateSUT( string userName, string password ) { + return new CustomerRegistration( userName, password, "mo", "khan", "4036813389", "calgary" ); + } + + [Test] + public void Should_not_allow_blank_password() { + string blankPassword = string.Empty; + IRegistration registration = CreateSUT( "username", blankPassword ); + IRichList< IBrokenRule > brokenRules = ListFactory.From( registration.BrokenRules( ) ); + + Assert.IsFalse( registration.IsValid( ) ); + Assert.AreEqual( "Password cannot be blank", brokenRules[ 0 ].Message( ) ); + } + + [Test] + public void Should_not_allow_blank_username() { + string blankUserName = string.Empty; + IRegistration registration = CreateSUT( blankUserName, "password" ); + IRichList< IBrokenRule > brokenRules = ListFactory.From( registration.BrokenRules( ) ); + + Assert.IsFalse( registration.IsValid( ) ); + Assert.AreEqual( "Username cannot be blank", brokenRules[ 0 ].Message( ) ); + } + + [Test] + public void Should_be_valid() { + Assert.IsTrue( CreateSUT( "username", "password" ).IsValid( ) ); + } + + [Test] + public void Shoud_return_no_broken_rules() { + IRegistration registration = CreateSUT( "userName", "PASSWORD" ); + IRichList< IBrokenRule > brokenRules = ListFactory.From( registration.BrokenRules( ) ); + Assert.AreEqual( 0, brokenRules.Count ); + } + + [Test] + public void Should_be_equal() { + Assert.AreEqual( CreateSUT( "mokhan", "password" ), CreateSUT( "mokhan", "password" ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/CustomerTest.cs b/slips/src/test/Marina.Test/Unit/Domain/CustomerTest.cs new file mode 100644 index 0000000..604b049 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/CustomerTest.cs @@ -0,0 +1,118 @@ +using System; +using Marina.Domain; +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; +using Marina.Infrastructure; +using Marina.Test.Utility; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class CustomerTest { + private MockRepository _mockery; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + } + + public ICustomer CreateSUT() { + return new Customer( ); + } + + [Test] + public void Should_be_able_to_register_a_new_boat() { + ICustomer customer = CreateSUT( ); + + Assert.AreEqual( 0, ListFactory.From( customer.RegisteredBoats( ) ).Count ); + customer.RegisterBoat( ObjectMother.Boat( ) ); + Assert.AreEqual( 1, ListFactory.From( customer.RegisteredBoats( ) ).Count ); + } + + [Test] + public void Should_not_be_able_to_register_an_already_registered_boat() { + ICustomer customer = CreateSUT( ); + IBoat boat = ObjectMother.Boat( ); + customer.RegisterBoat( boat ); + customer.RegisterBoat( boat ); + + Assert.AreEqual( 1, ListFactory.From( customer.RegisteredBoats( ) ).Count ); + } + + [Test] + public void Should_be_able_to_lease_a_slip() { + ICustomer customer = CreateSUT( ); + ISlip slip = ObjectMother.Slip( ); + ILeaseDuration duration = LeaseDurations.Monthly; + + customer.Lease( slip, duration ); + + Assert.AreEqual( 1, ListFactory.From( customer.Leases( ) ).Count ); + } + + [Test] + [ExpectedException( typeof( SlipIsAlreadyLeasedException ) )] + public void Should_not_be_able_to_lease_a_slip_that_is_already_leased() { + ISlip slip = _mockery.DynamicMock< ISlip >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( slip.IsLeased( ) ).Return( true ); + } + + using ( _mockery.Playback( ) ) { + ICustomer customer = CreateSUT( ); + customer.Lease( slip, LeaseDurations.Yearly ); + Assert.AreEqual( 0, ListFactory.From( customer.Leases( ) ).Count ); + } + } + + [Test] + public void Should_be_able_to_register_an_unregistered_boat() { + string registrationNumber = "435535"; + string manufacturer = "YAMAHA"; + DateTime yearOfModel = new DateTime( 1990, 01, 01 ); + long lengthInFeet = 100; + + ICustomer customer = CreateSUT( ); + customer.RegisterBoat( registrationNumber, manufacturer, yearOfModel, lengthInFeet ); + + IRichList< IBoat > boats = ListFactory.From( customer.RegisteredBoats( ) ); + + Assert.AreEqual( 1, boats.Count ); + Assert.AreEqual( registrationNumber, boats[ 0 ].RegistrationNumber( ) ); + Assert.AreEqual( manufacturer, boats[ 0 ].Manufacturer( ) ); + Assert.AreEqual( yearOfModel, boats[ 0 ].YearOfModel( ) ); + Assert.AreEqual( lengthInFeet, boats[ 0 ].LengthInFeet( ) ); + } + + [Test] + public void Should_be_able_to_register_an_account() { + ICustomer customer = CreateSUT( ); + customer.RegisterAccount( "username", "password", "mo", "khan", "4036813389", "calgary" ); + IRegistration registration = customer.Registration( ); + + Assert.AreEqual( "username", registration.Username( ) ); + Assert.AreEqual( "password", registration.Password( ) ); + Assert.AreEqual( "mo", registration.FirstName( ) ); + Assert.AreEqual( "khan", registration.LastName( ) ); + Assert.AreEqual( "4036813389", registration.PhoneNumber( ) ); + Assert.AreEqual( "calgary", registration.City( ) ); + } + + [Test] + public void should_have_no_registration_information() { + IRegistration registration = CreateSUT( ).Registration( ); + Assert.AreEqual( "", registration.Username( ) ); + Assert.AreEqual( "", registration.Password( ) ); + } + + [Test] + public void Should_be_able_to_update_the_registration_information() { + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + ICustomer customer = CreateSUT( ); + customer.UpdateRegistrationTo( registration ); + Assert.AreEqual( registration, customer.Registration( ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/DockTest.cs b/slips/src/test/Marina.Test/Unit/Domain/DockTest.cs new file mode 100644 index 0000000..7d4405a --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/DockTest.cs @@ -0,0 +1,24 @@ +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class DockTest { + private static IDock CreateSUT( params IUtility[] utilities ) { + return new Dock( 1, "dock a", ObjectMother.Location( ), Utilities.For( utilities ) ); + } + + [Test] + public void Should_be_able_to_tell_if_a_utility_is_enabled_at_the_dock() { + IDock dock = CreateSUT( Utilities.Water ); + Assert.IsTrue( dock.IsUtilityEnabled( Utilities.Water ) ); + Assert.IsFalse( dock.IsUtilityEnabled( Utilities.Electrical ) ); + + dock = CreateSUT( Utilities.Water, Utilities.Electrical ); + Assert.IsTrue( dock.IsUtilityEnabled( Utilities.Water ) ); + Assert.IsTrue( dock.IsUtilityEnabled( Utilities.Electrical ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/LeaseDurationTest.cs b/slips/src/test/Marina.Test/Unit/Domain/LeaseDurationTest.cs new file mode 100644 index 0000000..dab44f2 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/LeaseDurationTest.cs @@ -0,0 +1,45 @@ +using System; +using Marina.Domain; +using Marina.Domain.Interfaces; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class LeaseDurationTest { + [Test] + public void Should_return_daily_lease_duration() { + DateTime yesterday = DateTime.Now.AddDays( -1 ); + DateTime today = DateTime.Now; + + ILeaseDuration duration = LeaseDurations.FindFor( yesterday, today ); + Assert.AreEqual( LeaseDurations.Daily, duration ); + } + + [Test] + public void Should_return_weekly_lease_duration() { + DateTime aWeekAgo = DateTime.Now.AddDays( -7 ).Date; + DateTime today = DateTime.Now.Date; + + ILeaseDuration duration = LeaseDurations.FindFor( aWeekAgo, today ); + Assert.AreEqual( LeaseDurations.Weekly, duration ); + } + + [Test] + public void Should_return_monthly_lease_duration() { + DateTime aMonthAgo = DateTime.Now.AddDays( -30 ); + DateTime today = DateTime.Now; + + ILeaseDuration duration = LeaseDurations.FindFor( aMonthAgo, today ); + Assert.AreEqual( LeaseDurations.Monthly, duration ); + } + + [Test] + public void Should_return_yearly_lease_duration() { + DateTime aYearAgo = DateTime.Now.AddDays( -365 ); + DateTime today = DateTime.Now; + + ILeaseDuration duration = LeaseDurations.FindFor( aYearAgo, today ); + Assert.AreEqual( LeaseDurations.Yearly, duration ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/SlipTest.cs b/slips/src/test/Marina.Test/Unit/Domain/SlipTest.cs new file mode 100644 index 0000000..300a441 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/SlipTest.cs @@ -0,0 +1,78 @@ +using System; +using Marina.Domain; +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; +using Marina.Test.Utility; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class SlipTest { + public ISlip CreateSUT() { + return new Slip( -1, ObjectMother.Dock( ), 100, 100, false ); + } + + [Test] + public void Should_not_be_leased_to_anyone() { + Assert.IsFalse( CreateSUT( ).IsLeased( ) ); + } + + //[Test] + //public void Should_be_able_to_lease_to_a_customer() + //{ + // ICustomer customer = ObjectMother.Customer(); + // ISlip slip = CreateSUT(); + // ILeaseDuration durationOfLease = LeaseDurations.Daily; + + // ISlipLease lease = slip.LeaseTo(customer, durationOfLease); + + // Assert.AreEqual(customer, lease.Owner()); + // Assert.AreEqual(slip, lease.Slip()); + // Assert.AreEqual(durationOfLease, lease.Duration()); + // Assert.AreEqual(DateTime.Now.Date, lease.StartDate()); + //} + + [Test] + public void Lease_should_expire_at_11_am_the_following_day() { + DateTime elevenAmTomorrow = DateTime.Now.AddDays( 1 ).Date.AddHours( 11 ); + ISlipLease lease = CreateSUT( ).LeaseTo( ObjectMother.Customer( ), LeaseDurations.Daily ); + Assert.AreEqual( elevenAmTomorrow, lease.ExpiryDate( ) ); + } + + [Test] + public void Lease_should_expire_in_seven_days_on_the_eleventh_hour() { + DateTime oneWeekFromToday = DateTime.Now.AddDays( 7 ).Date.AddHours( 11 ); + ISlipLease lease = CreateSUT( ).LeaseTo( ObjectMother.Customer( ), LeaseDurations.Weekly ); + Assert.AreEqual( oneWeekFromToday, lease.ExpiryDate( ) ); + } + + [Test] + public void Lease_should_expire_in_thirty_days_on_the_eleventh_hour() { + DateTime oneMonthFromToday = DateTime.Now.AddDays( 30 ).Date.AddHours( 11 ); + ISlipLease lease = CreateSUT( ).LeaseTo( ObjectMother.Customer( ), LeaseDurations.Monthly ); + Assert.AreEqual( oneMonthFromToday, lease.ExpiryDate( ) ); + } + + [Test] + public void Lease_should_expire_in_365_days_on_the_eleventh_hour() { + DateTime oneYearFromToday = DateTime.Now.AddDays( 365 ).Date.AddHours( 11 ); + ISlipLease lease = CreateSUT( ).LeaseTo( ObjectMother.Customer( ), LeaseDurations.Yearly ); + Assert.AreEqual( oneYearFromToday, lease.ExpiryDate( ) ); + } + + [Test] + public void Should_be_leased_to_an_owner() { + ISlip slip = CreateSUT( ); + slip.LeaseTo( ObjectMother.Customer( ), LeaseDurations.Yearly ); + Assert.IsTrue( slip.IsLeased( ), "Should be leased to an owner" ); + } + + [Test] + [ExpectedException( typeof( SlipIsAlreadyLeasedException ) )] + public void Should_return_current_lease_if_it_is_already_leased_to_a_customer() { + ISlip slip = CreateSUT( ); + slip.LeaseTo( ObjectMother.Customer( ), LeaseDurations.Yearly ); + slip.LeaseTo( ObjectMother.Customer( ), LeaseDurations.Weekly ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Domain/UtilitiesTest.cs b/slips/src/test/Marina.Test/Unit/Domain/UtilitiesTest.cs new file mode 100644 index 0000000..c01d5d4 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Domain/UtilitiesTest.cs @@ -0,0 +1,36 @@ +using Marina.Domain; +using Marina.Domain.Interfaces; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Domain { + [TestFixture] + public class UtilitiesTest { + [Test] + public void Should_be_equal_to_a_single_utility() { + IUtility utility = Utilities.For( Utilities.Electrical ); + Assert.IsTrue( utility.IsEnabled( Utilities.Electrical ) ); + } + + [Test] + public void Should_be_equal_to_two_utilities() { + IUtility utility = Utilities.For( Utilities.Electrical, Utilities.Water ); + + Assert.IsTrue( utility.IsEnabled( Utilities.Electrical ) ); + Assert.IsTrue( utility.IsEnabled( Utilities.Water ) ); + } + + [Test] + public void Should_not_be_equal_to_either_utilities() { + IUtility utility = Utilities.For( null ); + + Assert.IsFalse( utility.IsEnabled( Utilities.Electrical ) ); + Assert.IsFalse( utility.IsEnabled( Utilities.Water ) ); + } + + [Test] + public void Should_have_water_enabled() { + IUtility utility = Utilities.For( null, Utilities.Water ); + Assert.IsTrue( utility.IsEnabled( Utilities.Water ) ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/Interfaces/LogTest.cs b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/Interfaces/LogTest.cs new file mode 100644 index 0000000..504d598 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/Interfaces/LogTest.cs @@ -0,0 +1,36 @@ +using Marina.Infrastructure.Container; +using Marina.Infrastructure.Logging.Interfaces; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Infrastructure.Logging.Interfaces { + [TestFixture] + public class LogTest { + private MockRepository mockery; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + } + + [Test] + public void Should_leverage_factory_to_return_a_logger_to_the_client( ) { + ILog mockLog = mockery.DynamicMock< ILog >( ); + ILogFactory mockLogFactory = mockery.DynamicMock< ILogFactory >( ); + + IDependencyContainer mockContainer = mockery.DynamicMock< IDependencyContainer >( ); + + using ( mockery.Record( ) ) { + Expect.Call( mockContainer.GetMeAnImplementationOfAn< ILogFactory >( ) ).Return( mockLogFactory ); + Expect.Call( mockLogFactory.CreateFor( typeof( LogTest ) ) ).Return( mockLog ); + } + + using ( mockery.Playback( ) ) { + Resolve.InitializeWith( mockContainer ); + ILog log = Log.For( this ); + Assert.AreEqual( mockLog, log ); + Resolve.InitializeWith( null ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactoryTest.cs b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactoryTest.cs new file mode 100644 index 0000000..7827274 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogFactoryTest.cs @@ -0,0 +1,19 @@ +using Marina.Infrastructure.Logging.Interfaces; +using Marina.Infrastructure.Logging.TextWriterLogging; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Infrastructure.TextWriterLogging { + [TestFixture] + public class TextWriterLogFactoryTest { + [Test] + public void Should_create_a_text_writer_log( ) { + ILog log = CreateSUT( ).CreateFor( this.GetType( ) ); + Assert.IsNotNull( log ); + Assert.IsInstanceOfType( typeof( TextWriterLog ), log ); + } + + private ILogFactory CreateSUT( ) { + return new TextWriterLogFactory( ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogTest.cs b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogTest.cs new file mode 100644 index 0000000..526590c --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Infrastructure/Logging/TextWriterLogging/TextWriterLogTest.cs @@ -0,0 +1,26 @@ +using System.IO; +using System.Text; +using Marina.Infrastructure.Logging.Interfaces; +using Marina.Infrastructure.Logging.TextWriterLogging; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Infrastructure.TextWriterLogging { + [TestFixture] + public class TextWriterLogTest { + [Test] + public void Should_log_message_to_backing_store( ) { + string expectedMessage = "Message"; + + StringWriter writer = new StringWriter( new StringBuilder( ) ); + + ILog consoleLogger = CreateSUT( writer ); + consoleLogger.Informational( expectedMessage ); + + Assert.AreEqual( expectedMessage, writer.ToString( ).Trim( ) ); + } + + private ILog CreateSUT( TextWriter writer ) { + return new TextWriterLog( writer ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Infrastructure/TransformTest.cs b/slips/src/test/Marina.Test/Unit/Infrastructure/TransformTest.cs new file mode 100644 index 0000000..49f67ac --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Infrastructure/TransformTest.cs @@ -0,0 +1,37 @@ +using System; +using System.Data; +using Marina.Infrastructure; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Infrastructure { + [TestFixture] + public class TransformerTest { + [Test] + public void Should_be_able_to_cast_to_the_actual_type_of_the_underlying_object( ) { + object item = new Item( ); + + Item result = CreateSUT( item ).To< Item >( ); + Assert.AreEqual( item, result ); + } + + [ExpectedException( typeof( NullReferenceException ) )] + [Test] + public void Should_not_be_able_to_cast_from_null_to_a_type( ) { + CreateSUT( null ).To< Item >( ); + } + + [ExpectedException( typeof( InvalidCastException ) )] + [Test] + public void Should_not_be_able_to_cast_from_one_instance_to_a_non_assignable_type( ) { + Item item = new Item( ); + + CreateSUT( item ).To< IDbConnection >( ); + } + + private ITransformer CreateSUT( object item ) { + return new Transformer( item ); + } + + private class Item {} + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/AvailableSlipsPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/AvailableSlipsPresenterTest.cs new file mode 100644 index 0000000..5fa950a --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/AvailableSlipsPresenterTest.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class AvailableSlipsPresenterTest { + private MockRepository mockery; + private ICatalogTasks mockTask; + private IAvailableSlipsView mockView; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockTask = mockery.DynamicMock< ICatalogTasks >( ); + mockView = mockery.DynamicMock< IAvailableSlipsView >( ); + } + + [Test] + public void Should_leverage_task_to_retrieve_all_available_slips_on_initialize( ) { + using ( mockery.Record( ) ) { + Expect.Call( mockTask.GetAllAvailableSlips( ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_the_available_slips( ) { + IEnumerable< SlipDisplayDTO > availableSlips = new List< SlipDisplayDTO >( ); + using ( mockery.Record( ) ) { + SetupResult.For( mockTask.GetAllAvailableSlips( ) ).Return( availableSlips ); + mockView.Display( availableSlips ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + private IAvailableSlipsPresenter CreateSUT( ) { + return new AvailableSlipsPresenter( mockView, mockTask ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/CurrentLeasesPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/CurrentLeasesPresenterTest.cs new file mode 100644 index 0000000..a9f2cb1 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/CurrentLeasesPresenterTest.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class CurrentLeasesPresenterTest { + private MockRepository _mockery; + private ILeaseTasks task; + private IHttpRequest mockRequest; + private ICurrentLeasesView mockView; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + task = _mockery.DynamicMock< ILeaseTasks >( ); + mockRequest = _mockery.DynamicMock< IHttpRequest >( ); + mockView = _mockery.DynamicMock< ICurrentLeasesView >( ); + } + + public ICurrentLeasesPresenter CreateSUT() { + return new CurrentLeasesPresenter( mockView, mockRequest, task ); + } + + [Test] + public void Should_leverage_task_to_retrieve_all_leases_for_customer_id() { + long customerId = 32; + IList< DisplayLeaseDTO > dtos = new List< DisplayLeaseDTO >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.CustomerId ) ).Return( customerId ); + Expect.Call( task.FindAllLeasesFor( customerId ) ).Return( dtos ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_the_found_leases_on_the_view() { + IList< DisplayLeaseDTO > dtos = new List< DisplayLeaseDTO >( ); + using ( _mockery.Record( ) ) { + SetupResult + .For( task.FindAllLeasesFor( 0 ) ) + .IgnoreArguments( ) + .Return( dtos ); + + mockView.Display( dtos ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/CustomerRegistrationPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/CustomerRegistrationPresenterTest.cs new file mode 100644 index 0000000..e571683 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/CustomerRegistrationPresenterTest.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class CustomerRegistrationPresenterTest { + private MockRepository mockery; + private ICustomerRegistrationPresentationMapper mockMapper; + private ICustomerRegistrationView mockView; + private IRegistrationTasks mockTask; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockMapper = mockery.DynamicMock< ICustomerRegistrationPresentationMapper >( ); + mockView = mockery.DynamicMock< ICustomerRegistrationView >( ); + mockTask = mockery.DynamicMock< IRegistrationTasks >( ); + } + + [Test] + public void Should_leverage_mapper_to_convert_view_data_to_dto( ) { + using ( mockery.Record( ) ) { + Expect.Call( mockMapper.MapFrom( mockView ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).RegisterCustomer( ); + } + } + + [Test] + public void Should_leverage_task_to_submit_new_registration_information( ) { + RegisterCustomerDTO customerRegistrationDTO = ObjectMother.CustomerRegistrationDTO( ); + using ( mockery.Record( ) ) { + SetupResult.For( mockMapper.MapFrom( mockView ) ).Return( customerRegistrationDTO ); + Expect.Call( mockTask.RegisterNew( customerRegistrationDTO ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).RegisterCustomer( ); + } + } + + [Test] + public void Should_display_response_on_view( ) { + IEnumerable< DisplayResponseLineDTO > responseDTO = + ObjectMother.EnumerableDisplayResponseLineDTO( ); + using ( mockery.Record( ) ) { + SetupResult.For( mockTask.RegisterNew( null ) ).IgnoreArguments( ).Return( responseDTO ); + mockView.Display( responseDTO ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).RegisterCustomer( ); + } + } + + private ICustomerRegistrationPresenter CreateSUT( ) { + return new CustomerRegistrationPresenter( mockView, mockMapper, mockTask ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/DockPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/DockPresenterTest.cs new file mode 100644 index 0000000..1fc2a26 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/DockPresenterTest.cs @@ -0,0 +1,90 @@ +using System.Collections.Generic; +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class DockPresenterTest { + private MockRepository mockery; + private IDockView mockView; + private ICatalogTasks mockTask; + private IHttpRequest mockRequest; + + private IDockPresenter CreateSUT( ) { + return new DockPresenter( mockView, mockRequest, mockTask ); + } + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockView = mockery.DynamicMock< IDockView >( ); + mockTask = mockery.DynamicMock< ICatalogTasks >( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + } + + [Test] + public void Should_leverage_its_task_to_retrieve_the_dock_information( ) { + long dockId = 1; + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.DockId ) ).Return( dockId ); + Expect.Call( mockTask.GetDockInformationBy( dockId ) ).Return( null ); + } + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_dock_information( ) { + DockDisplayDTO dto = ObjectMother.DockDisplayDTO( ); + int dockId = 2; + + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.DockId ) ).Return( dockId ); + SetupResult.For( mockTask.GetDockInformationBy( dockId ) ).Return( dto ); + mockView.Display( dto ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_leverage_task_to__load_list_of_locations_on_initialize( ) { + long dockId = 1; + + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.DockId ) ).Return( dockId ); + Expect.Call( mockTask.GetAvailableSlipsForDockBy( dockId ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_the_available_slips( ) { + IEnumerable< SlipDisplayDTO > availableSlips = new List< SlipDisplayDTO >( ); + long dockId = 2; + + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.DockId ) ).Return( dockId ); + SetupResult.For( mockTask.GetAvailableSlipsForDockBy( dockId ) ).Return( availableSlips ); + mockView.Display( availableSlips ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/LeaseSlipPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/LeaseSlipPresenterTest.cs new file mode 100644 index 0000000..d53f9f9 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/LeaseSlipPresenterTest.cs @@ -0,0 +1,100 @@ +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class LeaseSlipPresenterTest { + private MockRepository _mockery; + private IHttpRequest _mockRequest; + private ICatalogTasks _mockTask; + private ILeaseSlipView _mockView; + private ILeaseTasks _mockLeaseTasks; + private ILeaseRequestDtoFromHttpRequestMapper _mockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockRequest = _mockery.DynamicMock< IHttpRequest >( ); + _mockTask = _mockery.DynamicMock< ICatalogTasks >( ); + _mockLeaseTasks = _mockery.DynamicMock< ILeaseTasks >( ); + _mockView = _mockery.DynamicMock< ILeaseSlipView >( ); + + _mockMapper = _mockery.DynamicMock< ILeaseRequestDtoFromHttpRequestMapper >( ); + } + + public ILeaseSlipPresenter CreateSUT() { + return new LeaseSlipPresenter( _mockView, _mockRequest, _mockTask, _mockLeaseTasks, _mockMapper ); + } + + [Test] + public void Should_leverage_task_to_retrieve_information_on_slip() { + long slipId = 66; + SlipDisplayDTO slip = ObjectMother.SlipDisplayDTO( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockRequest.ParsePayloadFor( PayloadKeys.SlipId ) ).Return( slipId ); + Expect.Call( _mockTask.FindSlipBy( slipId ) ).Return( slip ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_found_slip_on_view() { + SlipDisplayDTO slip = ObjectMother.SlipDisplayDTO( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockTask.FindSlipBy( 0 ) ).IgnoreArguments( ).Return( slip ); + _mockView.Display( slip ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_save_lease_slip_when_customer_submits_a_request() { + long customerId = 2; + long slipId = 3; + + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( customerId, slipId, "weekly" ); + DisplayResponseLineDTO response = new DisplayResponseLineDTO( "" ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockMapper.MapFrom( _mockRequest ) ).Return( request ); + Expect.Call( _mockLeaseTasks.RequestLeaseUsing( request ) ).Return( response ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).SubmitLeaseRequest( ); + } + } + + [Test] + public void Should_display_response_from_lease_request_on_the_view() { + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( 1, 1, "weekly" ); + DisplayResponseLineDTO response = new DisplayResponseLineDTO( "" ); + + using ( _mockery.Record( ) ) { + SetupResult + .For( _mockLeaseTasks.RequestLeaseUsing( request ) ) + .IgnoreArguments( ) + .Return( response ); + _mockView.Display( response ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).SubmitLeaseRequest( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/LoginPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/LoginPresenterTest.cs new file mode 100644 index 0000000..d5dd994 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/LoginPresenterTest.cs @@ -0,0 +1,62 @@ +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class LoginPresenterTest { + private MockRepository mockery; + private ILoginView mockView; + private IAuthenticationTask mockTask; + private ILoginCredentialsMapper mockMapper; + private IHttpRequest mockRequest; + + [SetUp] + public void SetUp() { + mockery = new MockRepository( ); + mockView = mockery.DynamicMock< ILoginView >( ); + mockTask = mockery.DynamicMock< IAuthenticationTask >( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + mockMapper = mockery.DynamicMock< ILoginCredentialsMapper >( ); + } + + [Test] + public void Should_leverage_task_to_check_if_credentials_are_correct() { + LoginCredentialsDTO credentials = ObjectMother.LoginCredentialsDTO( ); + using ( mockery.Record( ) ) { + SetupResult.For( mockMapper.MapFrom( mockRequest ) ).Return( credentials ); + Expect.Call( mockTask.AuthenticateUserUsing( credentials ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Login( ); + } + } + + [Test] + public void Should_display_response_messages_from_task() { + DisplayResponseLineDTO responseMessage = ObjectMother.DisplayResponseLineDTO( ); + using ( mockery.Record( ) ) { + SetupResult + .For( mockTask.AuthenticateUserUsing( null ) ) + .IgnoreArguments( ) + .Return( responseMessage ); + mockView.Display( responseMessage ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Login( ); + } + } + + private ILoginPresenter CreateSUT() { + return new LoginPresenter( mockView, mockRequest, mockTask, mockMapper ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/Mappers/CustomerRegistrationPresentationMapperTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/CustomerRegistrationPresentationMapperTest.cs new file mode 100644 index 0000000..29f9d21 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/CustomerRegistrationPresentationMapperTest.cs @@ -0,0 +1,52 @@ +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Views; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation.Mappers { + [TestFixture] + public class CustomerRegistrationPresentationMapperTest { + private MockRepository mockery; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + } + + [Test] + public void Should_map_view_data_to_dto( ) { + ICustomerRegistrationView mockView = mockery.DynamicMock< ICustomerRegistrationView >( ); + string userName = "mrMO"; + string password = "password"; + string firstName = "mo"; + string lastName = "khan"; + string phoneNumber = "(403)6813389"; + string city = "calgary"; + + using ( mockery.Record( ) ) { + SetupResult.For( mockView.UserName( ) ).Return( userName ); + SetupResult.For( mockView.Password( ) ).Return( password ); + SetupResult.For( mockView.FirstName( ) ).Return( firstName ); + SetupResult.For( mockView.LastName( ) ).Return( lastName ); + SetupResult.For( mockView.PhoneNumber( ) ).Return( phoneNumber ); + SetupResult.For( mockView.City( ) ).Return( city ); + } + + using ( mockery.Playback( ) ) { + RegisterCustomerDTO mappedDTO = CreateSUT( ).MapFrom( mockView ); + + Assert.AreEqual( mappedDTO.UserName, userName ); + Assert.AreEqual( mappedDTO.Password, password ); + Assert.AreEqual( mappedDTO.FirstName, firstName ); + Assert.AreEqual( mappedDTO.LastName, lastName ); + Assert.AreEqual( mappedDTO.Phone, phoneNumber ); + Assert.AreEqual( mappedDTO.City, city ); + } + } + + private ICustomerRegistrationPresentationMapper CreateSUT( ) { + return new CustomerRegistrationPresentationMapper( ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/Mappers/LoginCredentialsMapperTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/LoginCredentialsMapperTest.cs new file mode 100644 index 0000000..4dae259 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/LoginCredentialsMapperTest.cs @@ -0,0 +1,35 @@ +using Marina.Presentation; +using Marina.Presentation.Mappers; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation.Mappers { + [TestFixture] + public class LoginCredentialsMapperTest { + private MockRepository mockery; + private IHttpRequest mockRequest; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + } + + [Test] + public void Should_map_username_from_request( ) { + using ( mockery.Record( ) ) { + Expect.Call( mockRequest.ParsePayloadFor( PayloadKeys.For( "uxUserNameTextBox" ) ) ).Return( null ); + Expect.Call( mockRequest.ParsePayloadFor( PayloadKeys.For( "uxPasswordTextBox" ) ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).MapFrom( mockRequest ); + } + } + + private LoginCredentialsMapper CreateSUT( ) { + return new LoginCredentialsMapper( ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/Mappers/UpdateRegistrationPresentationMapperTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/UpdateRegistrationPresentationMapperTest.cs new file mode 100644 index 0000000..510756f --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/Mappers/UpdateRegistrationPresentationMapperTest.cs @@ -0,0 +1,57 @@ +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation.Mappers { + [TestFixture] + public class UpdateRegistrationPresentationMapperTest { + private MockRepository mockery; + private IHttpRequest mockRequest; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + } + + [RowTest] + [Row( 0, "username", "password", "mo", "khan", "4036813389", "calgary" )] + [Row( 0, "username1", "p@ssword", "m0", "khAAn", "d33d9", "toronto" )] + [Row( 0, "username2", "passw0rd", "m1", "kh@n", "4036d333389", "new york" )] + public void Should_map_the_data_from_the_view_to_the_dto( long customerId, string userName, string password, + string firstName, + string lastName, string phone, string city ) { + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.CustomerId ) ).Return( customerId ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxUserNameTextBox" ) ) ).Return( userName ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxPasswordTextBox" ) ) ).Return( password ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxFirstNameTextBox" ) ) ).Return( firstName ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxLastNameTextBox" ) ) ).Return( lastName ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxPhoneNumberTextBox" ) ) ).Return( phone ); + SetupResult.For( mockRequest.ParsePayloadFor( Create( "uxCityTextBox" ) ) ).Return( city ); + } + + using ( mockery.Playback( ) ) { + UpdateCustomerRegistrationDTO dto = CreateSUT( ).MapFrom( mockRequest ); + Assert.AreEqual( customerId, dto.CustomerId ); + Assert.AreEqual( userName, dto.Username ); + Assert.AreEqual( password, dto.Password ); + Assert.AreEqual( firstName, dto.FirstName ); + Assert.AreEqual( lastName, dto.LastName ); + Assert.AreEqual( phone, dto.PhoneNumber ); + Assert.AreEqual( city, dto.City ); + } + } + + public PayloadKey< string > Create( string controlId ) { + return PayloadKeys.For( controlId ); + } + + private IUpdateRegistrationPresentationMapper CreateSUT( ) { + return new UpdateRegistrationPresentationMapper( ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/PayloadKeyTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/PayloadKeyTest.cs new file mode 100644 index 0000000..b7a3540 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/PayloadKeyTest.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Specialized; +using Marina.Presentation; +using MbUnit.Framework; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class PayloadKeyTest { + [Test] + public void Should_be_able_to_convert_an_item_from_the_payload_into_an_item_of_the_correct_type( ) { + string key = "DID"; + int expectedValue = 1; + + NameValueCollection payload = new NameValueCollection( ); + payload.Add( key, expectedValue.ToString( ) ); + + int actualValue = CreateSUT< int >( key ).ParseFrom( payload ); + Assert.AreEqual( expectedValue, actualValue ); + } + + [Test] + [ExpectedException( typeof( Exception ) )] + public void Should_not_be_able_to_parse_if_the_item_in_the_payload_does_not_match_the_data_type_for_the_key( ) { + NameValueCollection payload = new NameValueCollection( ); + payload.Add( "DID", "NotAnInt" ); + CreateSUT< int >( "DID" ).ParseFrom( payload ); + } + + [Test] + public void Should_be_able_to_implicitly_cast_to_a_string( ) { + string implictlyCasted = CreateSUT< int >( "DID" ); + Assert.AreEqual( "DID", implictlyCasted ); + } + + [Test] + [ExpectedException( typeof( PayloadKeyNotFoundException ) )] + public void Should_return_default_value_if_key_is_not_in_payload( ) { + CreateSUT< string >( "NOTINPAYLOAD" ).ParseFrom( new NameValueCollection( ) ); + } + + private PayloadKey< T > CreateSUT< T >( string key ) { + return new PayloadKey< T >( key ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/RegisterBoatPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/RegisterBoatPresenterTest.cs new file mode 100644 index 0000000..2daf6f2 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/RegisterBoatPresenterTest.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class RegisterBoatPresenterTest { + private MockRepository mockery; + private IRegisterBoatView mockView; + private IRegistrationTasks mockTask; + private IHttpRequest mockRequest; + private INewBoatRegistrationMapper mockMapper; + + [SetUp] + public void SetUp() { + mockery = new MockRepository( ); + mockView = mockery.DynamicMock< IRegisterBoatView >( ); + mockTask = mockery.DynamicMock< IRegistrationTasks >( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + mockMapper = mockery.DynamicMock< INewBoatRegistrationMapper >( ); + } + + [Test] + public void Should_leverage_task_to_submit_new_boat_registration() { + IEnumerable< DisplayResponseLineDTO > response = ObjectMother.EnumerableDisplayResponseLineDTO( ); + BoatRegistrationDTO boat = ObjectMother.BoatRegistrationDTO( ); + + using ( mockery.Record( ) ) { + SetupResult.For( mockMapper.MapFrom( mockRequest ) ).Return( boat ); + + Expect.Call( mockTask.AddNewBoatUsing( boat ) ).Return( response ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).SubmitRegistration( ); + } + } + + [Test] + public void Should_display_response_from_task_on_view() { + IEnumerable< DisplayResponseLineDTO > response = ObjectMother.EnumerableDisplayResponseLineDTO( ); + BoatRegistrationDTO boat = ObjectMother.BoatRegistrationDTO( ); + + using ( mockery.Record( ) ) { + SetupResult.For( mockMapper.MapFrom( mockRequest ) ).Return( boat ); + SetupResult.For( mockTask.AddNewBoatUsing( boat ) ).Return( response ); + + mockView.Display( response ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).SubmitRegistration( ); + } + } + + private IRegisterBoatPresenter CreateSUT() { + return new RegisterBoatPresenter( mockView, mockRequest, mockTask, mockMapper ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/UpdateRegistrationPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/UpdateRegistrationPresenterTest.cs new file mode 100644 index 0000000..753ee83 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/UpdateRegistrationPresenterTest.cs @@ -0,0 +1,92 @@ +using System.Collections.Generic; +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Mappers; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Test.Utility; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class UpdateRegistrationPresenterTest { + private MockRepository mockery; + private IRegistrationTasks mockTask; + private IUpdateRegistrationView mockView; + private IUpdateRegistrationPresentationMapper mockMapper; + private IHttpRequest mockRequest; + + [SetUp] + public void SetUp( ) { + mockery = new MockRepository( ); + mockView = mockery.DynamicMock< IUpdateRegistrationView >( ); + mockTask = mockery.DynamicMock< IRegistrationTasks >( ); + mockMapper = mockery.DynamicMock< IUpdateRegistrationPresentationMapper >( ); + mockRequest = mockery.DynamicMock< IHttpRequest >( ); + } + + [Test] + public void Should_leverage_task_to_load_current_registration_information_for_customer( ) { + int customerId = 1; + + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.CustomerId ) ).Return( customerId ); + Expect.Call( mockTask.LoadRegistrationFor( customerId ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_the_customer_registration_information_in_the_view( ) { + int customerId = 1; + CustomerRegistrationDisplayDTO customerRegistration = ObjectMother.DisplayCustomerRegistrationDTO( ); + using ( mockery.Record( ) ) { + SetupResult.For( mockRequest.ParsePayloadFor( PayloadKeys.CustomerId ) ).Return( customerId ); + SetupResult.For( mockTask.LoadRegistrationFor( customerId ) ).Return( customerRegistration ); + mockView.Display( customerRegistration ); + } + using ( mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_leverage_task_to_submit_changed_registration_information( ) { + UpdateCustomerRegistrationDTO customer = ObjectMother.UpdateCustomerRegistrationDTO( ); + + using ( mockery.Record( ) ) { + SetupResult.For( mockMapper.MapFrom( mockRequest ) ).Return( customer ); + Expect.Call( mockTask.UpdateRegistrationFor( customer ) ).Return( null ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).UpdateRegistration( ); + } + } + + [Test] + public void Should_display_response_on_view( ) { + IEnumerable< DisplayResponseLineDTO > responseDTO = + ObjectMother.EnumerableDisplayResponseLineDTO( ); + + using ( mockery.Record( ) ) { + SetupResult.For( mockTask.UpdateRegistrationFor( null ) ).IgnoreArguments( ).Return( responseDTO ); + mockView.Display( responseDTO ); + } + + using ( mockery.Playback( ) ) { + CreateSUT( ).UpdateRegistration( ); + } + } + + private IUpdateCustomerRegistrationPresenter CreateSUT( ) { + return new UpdateCustomerRegistrationPresenter( mockView, mockRequest, mockTask, mockMapper ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Presentation/ViewRegisteredBoatsPresenterTest.cs b/slips/src/test/Marina.Test/Unit/Presentation/ViewRegisteredBoatsPresenterTest.cs new file mode 100644 index 0000000..1443153 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Presentation/ViewRegisteredBoatsPresenterTest.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using Marina.Presentation; +using Marina.Presentation.DTO; +using Marina.Presentation.Presenters; +using Marina.Presentation.Views; +using Marina.Task; +using Marina.Web; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Presentation { + [TestFixture] + public class ViewRegisteredBoatsPresenterTest { + private MockRepository _mockery; + private IRegistrationTasks _mockTask; + private IHttpRequest _mockRequest; + private IRegisteredBoatsView _mockView; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockTask = _mockery.DynamicMock< IRegistrationTasks >( ); + _mockRequest = _mockery.DynamicMock< IHttpRequest >( ); + _mockView = _mockery.DynamicMock< IRegisteredBoatsView >( ); + } + + public IViewRegisteredBoatsPresenter CreateSUT() { + return new ViewRegisteredBoatsPresenter( _mockView, _mockTask, _mockRequest ); + } + + [Test] + public void Should_leverage_task_to_retrieve_all_registered_boats_for_customer() { + long customerId = 23; + IList< BoatRegistrationDTO > boats = new List< BoatRegistrationDTO >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockRequest.ParsePayloadFor( PayloadKeys.CustomerId ) ).Return( customerId ); + Expect.Call( _mockTask.AllBoatsFor( customerId ) ).Return( boats ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + + [Test] + public void Should_display_registered_boats_on_view() { + IList< BoatRegistrationDTO > boats = new List< BoatRegistrationDTO >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockTask.AllBoatsFor( 0 ) ) + .IgnoreArguments( ) + .Return( boats ); + + _mockView.Display( boats ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Initialize( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Task/CatalogTasksTest.cs b/slips/src/test/Marina.Test/Unit/Task/CatalogTasksTest.cs new file mode 100644 index 0000000..1eae132 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Task/CatalogTasksTest.cs @@ -0,0 +1,106 @@ +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Task; +using Marina.Task.Mappers; +using Marina.Test.Utility; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Task { + [TestFixture] + public class CatalogTasksTest { + private MockRepository _mockery; + private ISlipsRepository _slipRepository; + private ISlipsToDisplayDTOMapper _slipMapper; + private IDockRepository _dockRepository; + private IDockToDisplayDTOMapper _dockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _slipRepository = _mockery.DynamicMock< ISlipsRepository >( ); + _dockRepository = _mockery.DynamicMock< IDockRepository >( ); + _slipMapper = _mockery.DynamicMock< ISlipsToDisplayDTOMapper >( ); + _dockMapper = _mockery.DynamicMock< IDockToDisplayDTOMapper >( ); + } + + public ICatalogTasks CreateSUT() { + return new CatalogTasks( _slipRepository, _slipMapper, _dockRepository, _dockMapper ); + } + + [Test] + public void Should_leverage_mapper_to_map_all_slips() { + IList< ISlip > availableSlips = new List< ISlip >( ); + ISlip slip = _mockery.DynamicMock< ISlip >( ); + + availableSlips.Add( slip ); + + SlipDisplayDTO slipDTO = ObjectMother.SlipDisplayDTO( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _slipRepository.AllAvailableSlips( ) ).Return( availableSlips ); + Expect.Call( _slipMapper.MapFrom( slip ) ).Return( slipDTO ); + } + + using ( _mockery.Playback( ) ) { + IEnumerable< SlipDisplayDTO > allAvailableSlips = CreateSUT( ).GetAllAvailableSlips( ); + Assert.IsTrue( ListFactory.From( allAvailableSlips ).Contains( slipDTO ) ); + } + } + + [Test] + public void Should_leverage_repository_to_find_dock_by_id() { + long dockId = 1; + IDock dock = _mockery.DynamicMock< IDock >( ); + + using ( _mockery.Record( ) ) { + Expect.Call( _dockRepository.FindBy( dockId ) ).Return( dock ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).GetDockInformationBy( dockId ); + } + } + + [Test] + public void Should_leverage_mapper_to_return_dto() { + long dockId = 1; + IDock dock = _mockery.DynamicMock< IDock >( ); + + DockDisplayDTO dto = ObjectMother.DockDisplayDTO( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _dockRepository.FindBy( dockId ) ).Return( dock ); + Expect.Call( _dockMapper.MapFrom( dock ) ).Return( dto ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( dto, CreateSUT( ).GetDockInformationBy( dockId ) ); + } + } + + [Test] + public void Should_leverage_repository_to_find_dock() { + long dockId = 1; + IDock dock = _mockery.DynamicMock< IDock >( ); + ISlip slip = _mockery.DynamicMock< ISlip >( ); + + IList< ISlip > availableSlipsForDock = new List< ISlip >( ); + availableSlipsForDock.Add( slip ); + + SlipDisplayDTO dto = ObjectMother.SlipDisplayDTO( ); + using ( _mockery.Record( ) ) { + Expect.Call( _dockRepository.FindBy( dockId ) ).Return( dock ); + Expect.Call( _slipRepository.AllAvailableSlipsFor( dock ) ).Return( availableSlipsForDock ); + Expect.Call( _slipMapper.MapFrom( slip ) ).Return( dto ); + } + + using ( _mockery.Playback( ) ) { + IRichList< SlipDisplayDTO > slipsFound = ListFactory.From( CreateSUT( ).GetAvailableSlipsForDockBy( dockId ) ); + Assert.IsTrue( slipsFound.Contains( dto ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Task/LeaseTasksTest.cs b/slips/src/test/Marina.Test/Unit/Task/LeaseTasksTest.cs new file mode 100644 index 0000000..e645640 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Task/LeaseTasksTest.cs @@ -0,0 +1,181 @@ +using Marina.Domain; +using Marina.Domain.Exceptions; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Task; +using Marina.Task.Mappers; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Task { + [TestFixture] + public class LeaseTasksTest { + private MockRepository _mockery; + private ICustomerRepository _customers; + private ILeaseToDtoMapper _mapper; + private ISlipsRepository _slips; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _customers = _mockery.DynamicMock< ICustomerRepository >( ); + _slips = _mockery.DynamicMock< ISlipsRepository >( ); + _mapper = _mockery.DynamicMock< ILeaseToDtoMapper >( ); + } + + public ILeaseTasks CreateSUT() { + return new LeaseTasks( _customers, _slips, _mapper ); + } + + [Test] + public void Should_leverage_repository_to_find_customer() { + long customerId = 87; + + using ( _mockery.Record( ) ) { + Expect.Call( _customers.FindBy( customerId ) ).Return( _mockery.DynamicMock< ICustomer >( ) ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).FindAllLeasesFor( customerId ); + } + } + + [Test] + public void Should_leverage_mapper_to_convert_to_dto() { + long customerId = 99; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + ISlipLease lease = _mockery.DynamicMock< ISlipLease >( ); + DisplayLeaseDTO dto = new DisplayLeaseDTO( "", "", "" ); + + using ( _mockery.Record( ) ) { + SetupResult.For( customer.Leases( ) ).Return( ListFactory.For( lease ) ); + SetupResult.For( _customers.FindBy( customerId ) ).Return( customer ); + Expect.Call( _mapper.MapFrom( lease ) ).Return( dto ); + } + + using ( _mockery.Playback( ) ) { + IRichList< DisplayLeaseDTO > returnedDtos = ListFactory.From( CreateSUT( ).FindAllLeasesFor( customerId ) ); + Assert.AreEqual( 1, returnedDtos.Count ); + Assert.IsTrue( returnedDtos.Contains( dto ) ); + } + } + + [Test] + public void Should_lookup_customer_from_repository_when_requesting_a_lease() { + long customerId = 87; + long slipId = 32; + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( customerId, slipId, "daily" ); + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + + using ( _mockery.Record( ) ) { + Expect.Call( _customers.FindBy( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).RequestLeaseUsing( request ); + } + } + + [RowTest] + [Row( 99 )] + [Row( 87 )] + public void Should_lookup_slip_from_repository_when_requesting_a_lease( long slipId ) { + long customerId = 87; + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( customerId, slipId, "weekly" ); + ISlip slip = _mockery.DynamicMock< ISlip >( ); + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _customers.FindBy( 0 ) ).IgnoreArguments( ).Return( customer ); + Expect.Call( _slips.FindBy( slipId ) ).Return( slip ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).RequestLeaseUsing( request ); + } + } + + [Test] + public void customer_should_attempt_to_lease_slip() { + long customerId = 87; + long slipId = 32; + + string duration = "weekly"; + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( customerId, slipId, duration ); + ISlip slip = _mockery.DynamicMock< ISlip >( ); + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _customers.FindBy( customerId ) ).Return( customer ); + SetupResult.For( _slips.FindBy( slipId ) ).Return( slip ); + + customer.Lease( slip, LeaseDurations.FindBy( duration ) ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).RequestLeaseUsing( request ); + } + } + + [Test] + public void should_return_success_response_message() { + long customerId = 87; + long slipId = 32; + + string duration = LeaseDurations.Daily.Name( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _customers.FindBy( customerId ) ).Return( _mockery.DynamicMock< ICustomer >( ) ); + } + + using ( _mockery.Playback( ) ) { + DisplayResponseLineDTO response = + CreateSUT( ).RequestLeaseUsing( new SubmitLeaseRequestDTO( customerId, slipId, duration ) ); + Assert.AreEqual( response.Message, "Success!" ); + } + } + + [Test] + public void Should_return_error_message_if_the_slip_is_already_leased() { + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + using ( _mockery.Record( ) ) { + SetupResult + .For( _customers.FindBy( 0 ) ) + .IgnoreArguments( ) + .Return( customer ); + + customer.Lease( null, null ); + LastCall + .IgnoreArguments( ) + .Throw( new SlipIsAlreadyLeasedException( ) ); + } + + using ( _mockery.Playback( ) ) { + SubmitLeaseRequestDTO request = new SubmitLeaseRequestDTO( 1, 2, "weekly" ); + DisplayResponseLineDTO response = CreateSUT( ).RequestLeaseUsing( request ); + Assert.AreEqual( "Slip is already leased!", response.Message ); + } + } + + [Test] + public void Should_save_customer_back_to_repository() { + long customerId = 87; + long slipId = 32; + + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + + using ( _mockery.Record( ) ) { + SetupResult + .For( _customers.FindBy( customerId ) ) + .Return( customer ); + _customers.Save( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).RequestLeaseUsing( new SubmitLeaseRequestDTO( customerId, slipId, LeaseDurations.Daily.Name( ) ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Task/RegistrationTasksTest.cs b/slips/src/test/Marina.Test/Unit/Task/RegistrationTasksTest.cs new file mode 100644 index 0000000..226fae0 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Task/RegistrationTasksTest.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections.Generic; +using Marina.Domain.Interfaces; +using Marina.Domain.Repositories; +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Task; +using Marina.Task.Mappers; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Task { + [TestFixture] + public class RegistrationTasksTest { + private MockRepository _mockery; + private ICustomerRepository _mockCustomerRepository; + private IBrokenRulesToDisplayItemMapper _mockMapper; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockCustomerRepository = _mockery.DynamicMock< ICustomerRepository >( ); + _mockMapper = _mockery.DynamicMock< IBrokenRulesToDisplayItemMapper >( ); + } + + public IRegistrationTasks CreateSUT() { + return new RegistrationTasks( _mockMapper, _mockCustomerRepository ); + } + + [Test] + public void Should_leverage_repository_to_create_a_new_customer() { + string username = "username"; + string password = "password"; + string firstName = "mo"; + string lastName = "khan"; + string phoneNumber = "4036813389"; + string city = "calgary"; + RegisterCustomerDTO customerDTO = + new RegisterCustomerDTO( username, password, firstName, lastName, phoneNumber, city ); + + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( customer.Registration( ) ).Return( registration ); + SetupResult.For( registration.IsValid( ) ).Return( true ); + + Expect.Call( _mockCustomerRepository.NewCustomer( ) ).Return( customer ); + customer.RegisterAccount( username, password, firstName, lastName, phoneNumber, city ); + } + + using ( _mockery.Playback( ) ) { + ListFactory.From( CreateSUT( ).RegisterNew( customerDTO ) ); + } + } + + private RegisterCustomerDTO RegisterCustomerDTO() { + string username = "username"; + string password = "password"; + string firstName = "mo"; + string lastName = "khan"; + string phoneNumber = "4036813389"; + string city = "calgary"; + return new RegisterCustomerDTO( username, password, firstName, lastName, phoneNumber, city ); + } + + [Test] + public void Should_return_registration_messages() { + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + + IList< DisplayResponseLineDTO > brokenRulesDtos = new List< DisplayResponseLineDTO >( ); + IList< IBrokenRule > brokenRules = new List< IBrokenRule >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockCustomerRepository.NewCustomer( ) ).Return( customer ); + SetupResult.For( customer.Registration( ) ).Return( registration ); + + using ( _mockery.Ordered( ) ) { + Expect.Call( registration.IsValid( ) ).Return( false ); + Expect.Call( registration.BrokenRules( ) ).Return( brokenRules ); + Expect.Call( _mockMapper.MapFrom( brokenRules ) ).Return( brokenRulesDtos ); + } + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( brokenRulesDtos, CreateSUT( ).RegisterNew( RegisterCustomerDTO( ) ) ); + } + } + + [Test] + public void Should_return_a_success_message_if_there_are_no_broken_rules() { + IRegistration registration = _mockery.CreateMock< IRegistration >( ); + + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + using ( _mockery.Record( ) ) { + Expect.Call( _mockCustomerRepository.NewCustomer( ) ).Return( customer ); + SetupResult.For( customer.Registration( ) ).Return( registration ); + Expect + .Call( registration.IsValid( ) ) + .Return( true ); + } + + using ( _mockery.Playback( ) ) { + IRichList< DisplayResponseLineDTO > lineItems = + ListFactory.From( CreateSUT( ).RegisterNew( RegisterCustomerDTO( ) ) ); + Assert.IsTrue( lineItems.Contains( new DisplayResponseLineDTO( "Success!" ) ) ); + } + } + + [Test] + public void Should_lookup_customer_from_repository_using_customer_id() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + using ( _mockery.Record( ) ) { + Expect.Call( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).AddNewBoatUsing( new BoatRegistrationDTO( "reg#", "YAMAHA", "2007", "100", customerId ) ); + } + } + + [Test] + public void Should_register_boat_with_customer() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + customer.RegisterBoat( "reg#", "YAMAHA", new DateTime( 2007, 01, 01 ), 100 ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).AddNewBoatUsing( new BoatRegistrationDTO( "reg#", "YAMAHA", "2007", "100", customerId ) ); + } + } + + [Test] + public void Should_save_the_changed_customer_to_the_repository() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + using ( _mockery.Record( ) ) { + using ( _mockery.Ordered( ) ) { + SetupResult.For( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + customer.RegisterBoat( "reg#", "YAMAHA", new DateTime( 2007, 01, 01 ), 100 ); + _mockCustomerRepository.Save( customer ); + } + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).AddNewBoatUsing( new BoatRegistrationDTO( "reg#", "YAMAHA", "2007", "100", customerId ) ); + } + } + + [Test] + public void Should_leverage_repository_to_find_customer() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( registration.FirstName( ) ).Return( "mo" ); + SetupResult.For( registration.Username( ) ).Return( "mokhan" ); + SetupResult.For( registration.LastName( ) ).Return( "khan" ); + SetupResult.For( registration.PhoneNumber( ) ).Return( "4036813389" ); + SetupResult.For( registration.City( ) ).Return( "calgary" ); + + SetupResult.For( customer.Registration( ) ).Return( registration ); + Expect.Call( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( + new CustomerRegistrationDisplayDTO( "1", "mokhan", "mo", "khan", "4036813389", "calgary" ), + CreateSUT( ).LoadRegistrationFor( customerId ) ); + } + } + + [Test] + public void Should_leverage_repository_to_update_the_customer_information() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + using ( _mockery.Record( ) ) { + SetupResult.For( customer.Registration( ) ).Return( registration ); + SetupResult.For( registration.IsValid( ) ).Return( true ); + + using ( _mockery.Ordered( ) ) { + Expect.Call( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + customer.UpdateRegistrationTo( "mokhan", "password", "mo", "khan", "4036813389", "calgary" ); + _mockCustomerRepository.Save( customer ); + } + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).UpdateRegistrationFor( + new UpdateCustomerRegistrationDTO( 1, "mokhan", "password", "mo", "khan", "4036813389", "calgary" ) ); + } + } + + [Test] + public void Should_not_save_customer_if_registration_information_is_incorrect() { + int customerId = 1; + ICustomer customer = _mockery.DynamicMock< ICustomer >( ); + IRegistration registration = _mockery.DynamicMock< IRegistration >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( customer.Registration( ) ).Return( registration ); + SetupResult.For( registration.IsValid( ) ).Return( false ); + SetupResult.For( _mockCustomerRepository.FindBy( customerId ) ).Return( customer ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).UpdateRegistrationFor( + new UpdateCustomerRegistrationDTO( 1, "mokhan", "password", "mo", "khan", "4036813389", "calgary" ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Web/Commands/AvailableSlipsCommandTest.cs b/slips/src/test/Marina.Test/Unit/Web/Commands/AvailableSlipsCommandTest.cs new file mode 100644 index 0000000..c3ca810 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Web/Commands/AvailableSlipsCommandTest.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using Marina.Infrastructure; +using Marina.Presentation.DTO; +using Marina.Task; +using Marina.Web.Commands; +using Marina.Web.Views.Pages; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Web.Commands { + [TestFixture] + public class AvailableSlipsCommandTest { + private MockRepository _mockery; + private ICatalogTasks _mockTask; + private IAvailableSlipsWebView _mockView; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockTask = _mockery.DynamicMock< ICatalogTasks >( ); + _mockView = _mockery.DynamicMock< IAvailableSlipsWebView >( ); + } + + private ICommand CreateSUT() { + return new AvailableSlipsCommand( _mockView, _mockTask ); + } + + [Test] + public void Should_leverage_task_to_retrieve_all_available_slips_on_initialize() { + using ( _mockery.Record( ) ) { + Expect.Call( _mockTask.GetAllAvailableSlips( ) ).Return( null ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Execute( ); + } + } + + [Test] + public void Should_add_available_slips_to_bag_and_render_view() { + IEnumerable< SlipDisplayDTO > slips = new List< SlipDisplayDTO >( ); + + using ( _mockery.Record( ) ) { + SetupResult.For( _mockTask.GetAllAvailableSlips( ) ).Return( slips ); + using ( _mockery.Ordered( ) ) { + _mockView.AddToBag( slips ); + _mockView.Render( ); + } + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Execute( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerSpecificationTest.cs b/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerSpecificationTest.cs new file mode 100644 index 0000000..8b6c4fd --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerSpecificationTest.cs @@ -0,0 +1,53 @@ +using Marina.Infrastructure; +using Marina.Web.Handlers; +using Marina.Web.Http; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Web.Handlers { + [TestFixture] + public class RequestHandlerSpecificationTest { + private MockRepository _mockery; + + [SetUp] + public void Setup( ) { + _mockery = new MockRepository( ); + } + + [TearDown] + public void TearDown( ) { + _mockery.VerifyAll( ); + } + + [Test] + public void Should_return_true_if_destination_contains_command_name( ) { + IHttpGateway mockRequest = _mockery.DynamicMock< IHttpGateway >( ); + string commandName = "test.marina"; + using ( _mockery.Record( ) ) { + SetupResult.For( mockRequest.Destination( ) ).Return( commandName ); + } + + using ( _mockery.Playback( ) ) { + Assert.IsTrue( CreateSUT( commandName ).IsSatisfiedBy( mockRequest ) ); + } + } + + [Test] + public void Should_return_false_if_destination_does_not_contain_command_name( ) { + IHttpGateway mockRequest = _mockery.DynamicMock< IHttpGateway >( ); + string firstCommandName = "test.marina"; + string secondCommandName = "test2.marina"; + + using ( _mockery.Record( ) ) { + SetupResult.For( mockRequest.Destination( ) ).Return( secondCommandName ); + } + using ( _mockery.Playback( ) ) { + Assert.IsFalse( CreateSUT( firstCommandName ).IsSatisfiedBy( mockRequest ) ); + } + } + + private ISpecification< IHttpGateway > CreateSUT( string commandName ) { + return new RequestHandlerSpecification( commandName ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerTest.cs b/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerTest.cs new file mode 100644 index 0000000..b4a15ef --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Web/Handlers/RequestHandlerTest.cs @@ -0,0 +1,49 @@ +using Marina.Infrastructure; +using Marina.Web.Handlers; +using Marina.Web.Http; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Web.Handlers { + [TestFixture] + public class RequestHandlerTest { + private MockRepository _mockery; + private ISpecification< IHttpGateway > _mockSpecification; + private ICommand _mockCommand; + + [SetUp] + public void Setup( ) { + _mockery = new MockRepository( ); + _mockSpecification = _mockery.DynamicMock< ISpecification< IHttpGateway > >( ); + _mockCommand = _mockery.DynamicMock< ICommand >( ); + } + + [Test] + public void Should_delegate_to_specification_to_see_if_criteria_is_satisfied( ) { + IHttpGateway request = _mockery.DynamicMock< IHttpGateway >( ); + + using ( _mockery.Record( ) ) { + Expect.Call( _mockSpecification.IsSatisfiedBy( request ) ).Return( true ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).IsSatisfiedBy( request ); + } + } + + [Test] + public void Should_delegate_to_command_when_told_to_execute( ) { + using ( _mockery.Record( ) ) { + _mockCommand.Execute( ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Execute( ); + } + } + + private IRequestHandler CreateSUT( ) { + return new RequestHandler( _mockSpecification, _mockCommand ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Web/Views/Pages/AvailableSlipsWebViewTest.cs b/slips/src/test/Marina.Test/Unit/Web/Views/Pages/AvailableSlipsWebViewTest.cs new file mode 100644 index 0000000..2a40745 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Web/Views/Pages/AvailableSlipsWebViewTest.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; +using Marina.Presentation.DTO; +using Marina.Web.Http; +using Marina.Web.Views; +using Marina.Web.Views.Pages; +using MbUnit.Framework; +using Rhino.Mocks; + +namespace Marina.Test.Unit.Web.Views.Pages { + [TestFixture] + public class AvailableSlipsWebViewTest { + private MockRepository _mockery; + private IViewLuggageTransporter< IEnumerable< SlipDisplayDTO > > _mockViewBag; + private IHttpGateway _mockGateway; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockViewBag = _mockery.DynamicMock< IViewLuggageTransporter< IEnumerable< SlipDisplayDTO > > >( ); + _mockGateway = _mockery.DynamicMock< IHttpGateway >( ); + } + + public IAvailableSlipsWebView CreateSUT() { + return new AvailableSlipsWebView( _mockViewBag, _mockGateway ); + } + + [Test] + public void Should_add_item_to_view_bag() { + IEnumerable< SlipDisplayDTO > slips = new List< SlipDisplayDTO >( ); + + using ( _mockery.Record( ) ) { + _mockViewBag.Add( slips ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).AddToBag( slips ); + } + } + + [Test] + public void Should_return_the_name_of_the_page() { + using ( _mockery.Record( ) ) {} + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( "AvailableSlips.aspx", CreateSUT( ).Name( ) ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Unit/Web/Views/ViewTest.cs b/slips/src/test/Marina.Test/Unit/Web/Views/ViewTest.cs new file mode 100644 index 0000000..a3b2d08 --- /dev/null +++ b/slips/src/test/Marina.Test/Unit/Web/Views/ViewTest.cs @@ -0,0 +1,48 @@ +using Marina.Web.Http; +using Marina.Web.Views; +using MbUnit.Framework; +using Rhino.Mocks; +using Rhino.Mocks.Constraints; + +namespace Marina.Test.Unit.Web.Views { + [TestFixture] + public class ViewTest { + private MockRepository _mockery; + private string _pageName; + private IHttpGateway _mockGateway; + + [SetUp] + public void Setup() { + _mockery = new MockRepository( ); + _mockGateway = _mockery.DynamicMock< IHttpGateway >( ); + _pageName = string.Empty; + } + + public IView CreateSUT() { + return new View( _pageName, _mockGateway ); + } + + [Test] + public void Should_return_the_name_of_the_page_it_was_created_with() { + _pageName = "TestPage.aspx"; + + using ( _mockery.Record( ) ) {} + + using ( _mockery.Playback( ) ) { + Assert.AreEqual( _pageName, CreateSUT( ).Name( ) ); + } + } + + [Test] + public void Should_redirect_to_page() { + using ( _mockery.Record( ) ) { + _mockGateway.RedirectTo( null ); + LastCall.Constraints( Is.NotNull( ) ); + } + + using ( _mockery.Playback( ) ) { + CreateSUT( ).Render( ); + } + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Utility/ObjectMother.cs b/slips/src/test/Marina.Test/Utility/ObjectMother.cs new file mode 100644 index 0000000..d98bfd7 --- /dev/null +++ b/slips/src/test/Marina.Test/Utility/ObjectMother.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using Marina.Domain; +using Marina.Domain.Interfaces; +using Marina.Presentation.DTO; + +namespace Marina.Test.Utility { + public class ObjectMother { + public static RegisterCustomerDTO CustomerRegistrationDTO() { + return + new RegisterCustomerDTO( string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty ); + } + + public static IEnumerable< DisplayResponseLineDTO > EnumerableDisplayResponseLineDTO() { + return new List< DisplayResponseLineDTO >( ); + } + + public static DockDisplayDTO DockDisplayDTO() { + return new DockDisplayDTO( string.Empty, string.Empty, string.Empty, string.Empty ); + } + + public static CustomerRegistrationDisplayDTO DisplayCustomerRegistrationDTO() { + return + new CustomerRegistrationDisplayDTO( string.Empty, string.Empty, string.Empty, string.Empty, + string.Empty, string.Empty ); + } + + public static UpdateCustomerRegistrationDTO UpdateCustomerRegistrationDTO() { + return new UpdateCustomerRegistrationDTO( 0, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, + string.Empty ); + } + + public static BoatRegistrationDTO BoatRegistrationDTO() { + return new BoatRegistrationDTO( string.Empty, string.Empty, string.Empty, string.Empty, 0 ); + } + + public static LoginCredentialsDTO LoginCredentialsDTO() { + return new LoginCredentialsDTO( string.Empty, string.Empty ); + } + + public static SlipDisplayDTO SlipDisplayDTO() { + return new SlipDisplayDTO( "1", "dock a", "100", "100", "location a", "2" ); + } + + public static ILocation Location() { + return new Location( "location a" ); + } + + public static IBoat Boat() { + return new Boat( -1, string.Empty, string.Empty, DateTime.Now, 100 ); + } + + public static ISlip Slip() { + return new Slip( -1, null, 100, 100, false ); + } + + public static ICustomer Customer() { + return new Customer( ); + } + + public static IDock Dock() { + return new Dock( -1, "dock a", null, null ); + } + + public static DisplayResponseLineDTO DisplayResponseLineDTO() { + return new DisplayResponseLineDTO( string.Empty ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Utility/RunInRealContainerAttribute.cs b/slips/src/test/Marina.Test/Utility/RunInRealContainerAttribute.cs new file mode 100644 index 0000000..d161100 --- /dev/null +++ b/slips/src/test/Marina.Test/Utility/RunInRealContainerAttribute.cs @@ -0,0 +1,14 @@ +using System; +using MbUnit.Core.Framework; +using MbUnit.Core.Invokers; + +namespace Marina.Test.Utility +{ + public class RunInRealContainerAttribute : DecoratorPatternAttribute + { + public override IRunInvoker GetInvoker( IRunInvoker wrapper ) + { + return new RunInRealContainerRunInvoker( wrapper ); + } + } +} \ No newline at end of file diff --git a/slips/src/test/Marina.Test/Utility/RunInRealContainerRunInvoker.cs b/slips/src/test/Marina.Test/Utility/RunInRealContainerRunInvoker.cs new file mode 100644 index 0000000..cea4049 --- /dev/null +++ b/slips/src/test/Marina.Test/Utility/RunInRealContainerRunInvoker.cs @@ -0,0 +1,18 @@ +using System.Collections; +using Marina.Infrastructure.Container; +using Marina.Task; +using MbUnit.Core.Invokers; + +namespace Marina.Test.Utility { + public class RunInRealContainerRunInvoker : DecoratorRunInvoker { + public RunInRealContainerRunInvoker( IRunInvoker invoker ) + : base( invoker ) {} + + public override object Execute( object o, IList args ) { + ApplicationStartupTask.ApplicationBegin( ); + object result = base.Invoker.Execute( o, args ); + Resolve.InitializeWith( null ); + return result; + } + } +} \ No newline at end of file -- cgit v1.2.3