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]

Reply via email to