Author: husted
Date: Fri Jun 24 04:59:33 2005
New Revision: 201598

URL: http://svn.apache.org/viewcvs?rev=201598&view=rev
Log:
OVR-13
* Extend ValidatorCommand to provide default behavior for registered fields 
that do not supply a Processor.

Modified:
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs

Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs?rev=201598&r1=201597&r2=201598&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs Fri Jun 
24 04:59:33 2005
@@ -33,6 +33,19 @@
                        set { _Template = value; }
                }
 
+               /// <summary>
+               /// Convert input for fields that do not have a Processor.
+               /// </summary>
+               /// <remarks>
+               /// The default behavior is to pass through the objects, 
verbatim.
+               /// </remarks>
+               /// <param name="context">The IProcessorContext</param>
+               public virtual bool ConvertInput (IProcessorContext context)
+               {
+                       context.Target = context.Source;
+                       return true;
+               }
+
                public virtual bool ExecuteConvert (IProcessorContext context)
                {
                        bool okay = false;
@@ -42,15 +55,37 @@
 
                        if ((fieldContext == null))
                        {
-                               context.Target = context.Source;
+                               ConvertInput (context);
                                return true;
                        }
 
-                       IProcessor processor = table.GetProcessor 
(fieldContext.ProcessorID);
-                       okay = processor.ConvertInput (context);
+                       string processorID = fieldContext.ProcessorID;
+                       if (processorID == null)
+                               okay = ConvertInput (context);
+                       else
+                       {
+                               IProcessor processor = table.GetProcessor 
(fieldContext.ProcessorID);
+                               okay = processor.ConvertInput (context);
+                       }
                        return okay;
                }
 
+               /// <summary>
+               /// Format output for fields that do not have a Processor.
+               /// </summary>
+               /// <remarks>
+               /// The default behavior is to pass through ICollection types 
+               /// and call ToString on everything else.
+               /// </remarks>
+               /// <param name="context">The IProcessorContext</param>
+               public virtual bool FormatOutput (IProcessorContext context)
+               {
+                       Type sourceType = context.Source.GetType ();
+                       if (IsCollectionType (sourceType)) context.Target = 
context.Source;
+                       else context.Target = context.Source.ToString ();
+                       return true;
+               }
+
                public virtual bool ExecuteFormat (IProcessorContext context)
                {
                        bool okay = false;
@@ -63,18 +98,18 @@
                        {
                                if (source == null)
                                        context.Target = null;
-                               else
-                               {
-                                       // TODO: Remove exception code and 
replace with Collection processors
-                                       Type sourceType = source.GetType ();
-                                       if (IsCollectionType (sourceType)) 
context.Target = source;
-                                       else context.Target = source.ToString 
();
-                               }
+                               else okay = FormatOutput (context);
                                return true;
                        }
 
-                       IProcessor processor = table.GetProcessor 
(fieldContext.ProcessorID);
-                       okay = processor.FormatOutput (context);
+                       string processorID = fieldContext.ProcessorID;
+                       if (processorID == null)
+                               okay = FormatOutput (context);
+                       else
+                       {
+                               IProcessor processor = table.GetProcessor 
(fieldContext.ProcessorID);
+                               okay = processor.FormatOutput (context);
+                       }
                        return okay;
                }
 
@@ -94,7 +129,7 @@
                {
                        IDictionary criteria = context.Criteria;
                        if (null == criteria)
-                               throw new ArgumentNullException ("Criteria", 
"BaseValidator.NexusExecute.AssertProcessRequired");
+                               throw new ArgumentNullException 
("Criteria==null", "BaseValidator.NexusExecute.AssertProcessRequired");
                }
 
                private void ProcessRequired (IRequestContext context)
@@ -136,7 +171,7 @@
 
                        IFieldTable table = context.FieldTable;
                        if (null == table)
-                               throw new ArgumentNullException ("FieldTable", 
"BaseValidator.NexusExecute.AssertProcessRelated");
+                               throw new ArgumentNullException 
("FieldTable==null", "BaseValidator.NexusExecute.AssertProcessRelated");
                }
 
                private void ProcessRelated (IRequestContext context)
@@ -162,6 +197,5 @@
                }
 
                #endregion
-
        }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to