Author: husted
Date: Thu Apr 7 17:00:28 2005
New Revision: 160496
URL: http://svn.apache.org/viewcvs?view=rev&rev=160496
Log:
OVR-7
OVR-8
* Greenbar initial Controller and RequestContext tests.
Added:
struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs
Modified:
struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs
struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs
struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs
struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs
struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs
struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs Thu Apr 7
17:00:28 2005
@@ -3,9 +3,9 @@
namespace Nexus.Core
{
/// <summary>
- /// Concrete IRequestCommand implementation.
+ /// Abstract IRequestCommand; subclass must implement RequestExecute.
/// </summary>
- public class RequestCommand : IRequestCommand
+ public abstract class RequestCommand : IRequestCommand
{
/// <summary>
@@ -31,16 +31,12 @@
return new RequestContext (ID);
}
- public virtual bool RequestExecute(IRequestContext context)
- {
- // TODO: Add RequestCommand.NexusExecute implementation
- return STOP;
- }
+ public abstract bool RequestExecute(IRequestContext context);
- public virtual bool Execute (IContext context)
+ public virtual bool Execute (IContext _context)
{
- IRequestContext nexus = context as IRequestContext;
- return RequestExecute (nexus);
+ IRequestContext context = _context as IRequestContext;
+ return RequestExecute (context);
}
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs Thu Apr 7
17:00:28 2005
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using Agility.Core;
namespace Nexus.Core
@@ -42,79 +43,79 @@
{
get
{
- // TODO: Add RequestContext.HasOutcome getter
implementation
- return false;
+ return Contains (Command);
}
}
public object Outcome
{
- get
- {
- // TODO: Add RequestContext.Outcome getter
implementation
- return null;
- }
- set
- {
- // TODO: Add RequestContext.Outcome setter
implementation
- }
+ get { return this [Command]; }
+ set { this [Command] = value; }
}
public Agility.Core.IContext Errors
{
- get
+ get { return this [Tokens.ERRORS] as IContext; }
+ set { this [Tokens.ERRORS] = value; }
+ }
+
+ /// <summary>
+ /// Convenience method to lazily instantiate a message store.
+ /// </summary>
+ /// <param name="template">Message template to add to the
queue.</param>
+ /// <param name="queue">Token for queue of messages within the
store.</param>
+ /// <param name="key">Token for message store.</param>
+ private void AddStore (string template, string queue, string
key)
+ {
+ IContext store = this [key] as IContext;
+ if (null == store)
{
- // TODO: Add RequestContext.Errors getter
implementation
- return null;
+ store = new Context (); // FIXME: Spring?
+ this [key] = store;
}
- set
+ IList list;
+ if (store.Contains (queue))
+ list = store [queue] as IList;
+ else
{
- // TODO: Add RequestContext.Errors setter
implementation
+ list = new ArrayList (); // FIXME: Spring?
+ store [queue] = list;
}
+ list.Add (template);
}
- public void AddError(string template)
+ public void AddError (string template)
{
- // TODO: Add RequestContext.AddError implementation
+ AddStore (template, Tokens.GENERIC_MESSAGE,
Tokens.ERRORS);
}
+
public bool HasErrors
{
- get
- {
- // TODO: Add RequestContext.HasErrors getter
implementation
- return false;
- }
+ get{return this.ContainsKey (Tokens.ERRORS);}
}
public Exception Fault
{
- get
- {
- // TODO: Add RequestContext.Fault getter
implementation
- return null;
- }
+ get { return this [Tokens.FAULT] as Exception; }
set
{
- // TODO: Add RequestContext.Fault setter
implementation
+ Exception e = value as Exception;
+ this [Tokens.FAULT] = e;
+ AddError (e.Message);
}
}
public bool HasFault
{
- get
- {
- // TODO: Add RequestContext.HasFault getter
implementation
- return false;
- }
+ get{return this.ContainsKey (Tokens.FAULT);}
}
public bool IsNominal
{
get
{
- // TODO: Add RequestContext.IsNominal getter
implementation
- return false;
+ return (!HasErrors && !HasFault);
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs Thu Apr 7 17:00:28 2005
@@ -20,5 +20,21 @@
/// </summary>
public const string COMMAND_BIN = "__COMMAND_BIN";
+ /// <summary>
+ /// Token for Errors property.
+ /// </summary>
+ public const string ERRORS = "__ERRORS";
+
+ /// <summary>
+ /// Token for a generic message.
+ /// </summary>
+ public const string GENERIC_MESSAGE = "__GENERIC_MESSAGE";
+
+ /// <summary>
+ /// Token for Fault property.
+ /// </summary>
+ public const string FAULT = "__FAULT";
+
+
}
}
Added: struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs?view=auto&rev=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs (added)
+++ struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs Thu Apr 7
17:00:28 2005
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// 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("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// 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 Revision and Build
Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly
signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+// (*) If no key is specified, the assembly is not signed.
+// (*) KeyName refers to a key that has been installed in the Crypto Service
+// Provider (CSP) on your machine. KeyFile refers to a file which
contains
+// a key.
+// (*) If the KeyFile and the KeyName values are both specified, the
+// following processing occurs:
+// (1) If the KeyName can be found in the CSP, that key is used.
+// (2) If the KeyName does not exist and the KeyFile does exist, the key
+// in the KeyFile is installed into the CSP and used.
+// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name)
utility.
+// When specifying the KeyFile, the location of the KeyFile should be
+// relative to the project output directory which is
+// %Project Directory%\obj\<configuration>. For example, if your KeyFile
is
+// located in the project directory, you would specify the
AssemblyKeyFile
+// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+// documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
Modified: struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs Thu Apr 7
17:00:28 2005
@@ -1,3 +1,6 @@
+using System.Collections;
+using System.Text;
+using Agility.Core;
using Agility.Extras.Spring;
using NUnit.Framework;
using Spring.Context;
@@ -18,6 +21,40 @@
// TODO: Implement Objects.Factory [OVR-8]
IApplicationContext factory = Objects.Factory ();
controller = new Controller (factory);
+ }
+
+ public void AssertNoFault (IRequestContext context)
+ {
+ bool hasFault = context.HasFault;
+ if (hasFault)
+ Assert.Fail (context.Fault.Message);
+ }
+
+ public void AssertNominal (IRequestContext context)
+ {
+ AssertNoFault (context);
+ bool hasErrors = context.HasErrors;
+ if (hasErrors)
+ {
+ StringBuilder outer = new StringBuilder ();
+ IContext store = context.Errors;
+ ICollection keys = store.Keys;
+ foreach (string key in keys)
+ {
+ StringBuilder inner = new StringBuilder
();
+ inner.Append (key);
+ inner.Append (": ");
+ IList messages = store [key] as IList;
+ foreach (string message in messages)
+ {
+ inner.Append (message);
+ inner.Append (";");
+ }
+ outer.Append (inner.ToString ());
+ outer.Append ("/n");
+ }
+ Assert.Fail (outer.ToString ());
+ }
}
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs Thu Apr 7
17:00:28 2005
@@ -16,6 +16,7 @@
public void ExecuteContext()
{
IRequestContext context =
controller.ExecuteContext(App.LIST_ALL);
+ AssertNominal(context);
Assert.IsTrue (context.IsNominal,"Expected nominal
result.");
Assert.IsTrue(context.HasOutcome,"Expected outcome from
command.");
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs Thu Apr 7
17:00:28 2005
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using Nexus.Core.Commands;
using NUnit.Framework;
namespace Nexus.Core
@@ -22,6 +23,8 @@
public void SetUp()
{
context = new RequestContext();
+ context.Command = "list_all";
+ context.CommandBin = new ListAll();
Assert.IsTrue (context.IsNominal,"Expected nominal
state for a new IRequestContext.");
Assert.IsFalse(context.HasOutcome,"Expected no Outcome
for a new IRequestContext.");
Modified:
struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml?view=diff&r1=160495&r2=160496
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml
(original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml Thu
Apr 7 17:00:28 2005
@@ -3,6 +3,8 @@
"http://www.springframework.net/dtd/spring-objects.dtd">
<objects>
- <object id="list_all" type="Nexus.Core.Commands.ListAll"></object>
+ <object id="list_all" type="Nexus.Core.Commands.ListAll">
+ <property name="ID"><value>list_all</value></property>
+ </object>
</objects>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]