dflorey     2004/05/05 10:53:12

  Modified:    proposals/projector/src/java/org/apache/slide/projector/processor/form
                        ControlComposer.java Control.java Trigger.java
                        Form.java FormHandler.java
               proposals/projector/src/java/org/apache/slide/projector/util
                        ProcessorHelper.java
               proposals/projector/src/java/org/apache/slide/projector/resource
                        BooleanResource.java
  Log:
  Rebuilding form handling to enable multiple page spanning forms
  
  Revision  Changes    Path
  1.2       +77 -67    
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ControlComposer.java
  
  Index: ControlComposer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ControlComposer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ControlComposer.java      5 May 2004 15:32:44 -0000       1.1
  +++ ControlComposer.java      5 May 2004 17:53:12 -0000       1.2
  @@ -73,6 +73,7 @@
           super.configure(config);
           ParameterDescriptor[] parentParameterDescriptors = 
super.getParameterDescriptors();
           parameterDescriptors = new 
ParameterDescriptor[parentParameterDescriptors.length + 6];
  +        System.arraycopy(parentParameterDescriptors, 0, parameterDescriptors, 0, 
parentParameterDescriptors.length);
           parameterDescriptors[parentParameterDescriptors.length] =
                new ParameterDescriptor(CONTROL_DESCRIPTIONS, new 
ParameterMessage("controlComposer/controlDescriptions"), new MapValueDescriptor());
           parameterDescriptors[parentParameterDescriptors.length+1] =
  @@ -91,10 +92,9 @@
        Map controlDescriptions = 
((MapResource)parameter.get(CONTROL_DESCRIPTIONS)).getMap();
        String store = parameter.get(STORE).toString();
        String domain = parameter.get(DOMAIN).toString();
  -     URI actionUri = (URI)parameter.get(ACTION);
  -     URI errorsProcessorUri = (URI)parameter.get(ERRORS_PROCESSOR);
  +     URI actionUri = (URIResource)parameter.get(ACTION);
  +     Resource errorsProcessorUri = (Resource)parameter.get(ERRORS_PROCESSOR);
        Locale locale = ((LocaleResource)parameter.get(LOCALE)).getLocale();
  -        boolean validate = 
((BooleanResource)parameter.get(VALIDATE)).booleanValue();
           String state = DEFAULT_STATE;
           List informations = context.getInformations();
           MapResource generatedControls = new MapResource();
  @@ -102,88 +102,98 @@
                Map.Entry entry = (Map.Entry)i.next();
                String controlName = (String)entry.getKey();
                Map controlParameters = ((MapResource)entry.getValue()).getMap();
  -             if ( ((URI)controlParameters.get(Control.ACTION)) == null ) 
controlParameters.put(Control.ACTION, actionUri);
  -             Control control = 
(Control)ProcessorManager.getInstance().getProcessor((URI)controlParameters.get(CONTROL));
  +             URI controlUri = (URI)controlParameters.get(CONTROL); 
  +             Processor control = 
(Processor)ProcessorManager.getInstance().getProcessor(controlUri);
  +             Resource controlActionUri = 
(Resource)controlParameters.get(Control.ACTION);
  +             if ( controlActionUri == null || controlActionUri instanceof 
NullResource ) controlActionUri = actionUri; 
  +                     controlParameters.put(Control.ACTION, controlActionUri);
                try {
                        ProcessorHelper.validate(control.getParameterDescriptors(), 
controlParameters, context);
                } catch ( ValidationException exception ) {
  -                     throw new ValidationException(new 
ErrorMessage("controlComposer/controlParameterInvalid", new Object[] { control }), 
exception);
  +                     throw new ValidationException(new 
ErrorMessage("controlComposer/controlParameterInvalid", new Object[] { controlUri }), 
exception);
                }
  -             ParameterDescriptor parameterDescriptor = 
control.getParameterDescriptor(controlParameters, context); 
  -            String parameterName = parameterDescriptor.getName();
  -            ParameterMessage description = 
(ParameterMessage)parameterDescriptor.getDescription();
  -             boolean required = parameterDescriptor.isRequired();
  -             String controlState = Control.OPTIONAL_CONTROL;
  -             if ( required ) {
  -                     controlState = Control.REQUIRED_CONTROL;
  -             }
  -             Object controlValue = null;
  -             if ( validate ) {
  +             if ( control instanceof Control ) {
  +                     ParameterDescriptor parameterDescriptor = 
Control.getParameterDescriptor(controlParameters, context); 
  +                     String parameterName = parameterDescriptor.getName();
  +                     ParameterMessage description = 
(ParameterMessage)parameterDescriptor.getDescription();
  +                     boolean required = parameterDescriptor.isRequired();
  +                     String controlState = Control.OPTIONAL_CONTROL;
  +                     if ( required ) {
  +                             controlState = Control.REQUIRED_CONTROL;
  +                     }
  +                     Object controlValue = null;
                        MapResource mapResource = 
(MapResource)context.getStore(StoreHelper.getStoreByName(store)).get(domain);
  +                     boolean validate = false;
                        if ( mapResource != null ) {
                                controlValue = mapResource.getMap().get(parameterName);
  +                             validate = 
((BooleanResource)mapResource.getMap().get(VALIDATE)).booleanValue();
                        }
  -                     try {
  -                             controlValue = 
ProcessorHelper.validate(parameterDescriptor, controlValue, context);
  -                     } catch ( ValidationException exception ) {
  -                             controlValue = 
StringValueDescriptor.toString(controlValue);
  -                             context.addInformation(new 
Information(Information.ERROR, exception.getErrorMessage(), new String[] { 
parameterName }));
  -                     }
  -                     controlParameters.put(Control.VALUE, controlValue);
  -                     if ( hasErrors(informations, parameterName) ) {
  -                             if ( required ) {
  -                                     controlState = 
Control.REQUIRED_INVALID_CONTROL;
  -                             } else {
  -                                     controlState = 
Control.OPTIONAL_INVALID_CONTROL;
  +                     if ( validate ) {
  +                             try {
  +                                     controlValue = 
ProcessorHelper.validate(parameterDescriptor, controlValue, context);
  +                             } catch ( ValidationException exception ) {
  +                                     controlValue = 
StringValueDescriptor.toString(controlValue);
  +                                     context.addInformation(new 
Information(Information.ERROR, exception.getErrorMessage(), new String[] { 
parameterName }));
                                }
  -                             explodeInformations(controlParameters, informations, 
parameterName, locale);
  -                     } else {
  -                             if ( required ) {
  -                                     controlState = 
Control.REQUIRED_INVALID_CONTROL;
  +                             controlParameters.put(Control.VALUE, controlValue);
  +                             if ( hasErrors(informations, parameterName) ) {
  +                                     if ( required ) {
  +                                             controlState = 
Control.REQUIRED_INVALID_CONTROL;
  +                                     } else {
  +                                             controlState = 
Control.OPTIONAL_INVALID_CONTROL;
  +                                     }
  +                                     explodeInformations(controlParameters, 
informations, parameterName, locale);
                                } else {
  -                                     controlState = Control.OPTIONAL_VALID_CONTROL;
  +                                     if ( required ) {
  +                                             controlState = 
Control.REQUIRED_INVALID_CONTROL;
  +                                     } else {
  +                                             controlState = 
Control.OPTIONAL_VALID_CONTROL;
  +                                     }
                                }
                        }
  -             }
  -             controlParameters.put(Control.STATE, controlState);
  -            controlParameters.put(Control.VALUE, controlValue);
  -             Result controlResult = control.process(controlParameters, context);
  -             Resource controlContainerUri = 
(Resource)controlParameters.get(CONTROL_CONTAINER); 
  -             if ( controlContainerUri != null ) {
  -             Processor controlContainer = 
ProcessorManager.getInstance().getProcessor((URI)controlContainerUri);
  -             Map controlContainerParameters = new HashMap();
  -             controlContainerParameters.putAll(parameter);
  -             if ( hasErrors(informations, parameterName) ) {
  -                     explodeInformations(controlContainerParameters, informations, 
parameterName, locale);
  -             }
  -             controlContainerParameters.put(CONTROL, 
controlResult.getResultEntries().get(OUTPUT));
  -             controlContainerParameters.put(TITLE, description.getTitle(locale, 
parameterName ));
  -             try {
  -                     controlContainerParameters.put(TEXT, 
description.getText(locale));
  -                     controlContainerParameters.put(PROMPT, 
description.getPrompt(locale));
  -             } catch ( MessageNotFoundException exception ) {
  -                     controlContainerParameters.put(TEXT, 
NO_PARAMETER_MESSAGE_AVAILABLE.getText(locale, " "));
  -                     controlContainerParameters.put(PROMPT, 
NO_PARAMETER_MESSAGE_AVAILABLE.getPrompt(locale, " "));
  +             controlParameters.put(Control.STATE, controlState);
  +                controlParameters.put(Control.VALUE, controlValue);
  +                Result controlResult = control.process(controlParameters, context);
  +                Resource controlContainerUri = 
(Resource)controlParameters.get(CONTROL_CONTAINER); 
  +                if ( controlContainerUri != null ) {
  +                     Processor controlContainer = 
ProcessorManager.getInstance().getProcessor((URI)controlContainerUri);
  +                     Map controlContainerParameters = new HashMap();
  +                     controlContainerParameters.putAll(parameter);
  +                     if ( hasErrors(informations, parameterName) ) {
  +                             explodeInformations(controlContainerParameters, 
informations, parameterName, locale);
  +                     }
  +                     controlContainerParameters.put(CONTROL, 
controlResult.getResultEntries().get(OUTPUT));
  +                     controlContainerParameters.put(TITLE, 
description.getTitle(locale, parameterName ));
  +                     try {
  +                             controlContainerParameters.put(TEXT, 
description.getText(locale));
  +                             controlContainerParameters.put(PROMPT, 
description.getPrompt(locale));
  +                     } catch ( MessageNotFoundException exception ) {
  +                             controlContainerParameters.put(TEXT, 
NO_PARAMETER_MESSAGE_AVAILABLE.getText(locale, " "));
  +                             controlContainerParameters.put(PROMPT, 
NO_PARAMETER_MESSAGE_AVAILABLE.getPrompt(locale, " "));
  +                     }
  +                     try {
  +                             
ProcessorHelper.validate(controlContainer.getParameterDescriptors(), 
controlContainerParameters, context);
  +                     } catch ( ValidationException exception ) {
  +                             throw new ValidationException(new 
ErrorMessage("controlComposer/controlContainerParameterInvalid", new Object[] { 
controlContainerUri }), exception);
  +                     }
  +                     Result controlContainerResult = 
controlContainer.process(controlContainerParameters, context);
  +                     generatedControls.getMap().put(controlName, 
controlContainerResult.getResultEntries().get(OUTPUT));
  +                } else {
  +                     generatedControls.getMap().put(controlName, 
controlResult.getResultEntries().get(OUTPUT));
  +                }
  +             if ( controlState == Control.OPTIONAL_INVALID_CONTROL || controlState 
== Control.REQUIRED_INVALID_CONTROL  ) {
  +                     state = INVALID_STATE;
  +             } else if ( state == DEFAULT_STATE && ( controlState == 
Control.OPTIONAL_VALID_CONTROL || controlState == Control.REQUIRED_VALID_CONTROL ) ) {
  +                     state = VALID_STATE;
                }
  -             try {
  -                     
ProcessorHelper.validate(controlContainer.getParameterDescriptors(), 
controlContainerParameters, context);
  -             } catch ( ValidationException exception ) {
  -                     throw new ValidationException(new 
ErrorMessage("controlComposer/controlContainerParameterInvalid", new Object[] { 
controlContainerUri }), exception);
  -             }
  -             Result controlContainerResult = 
controlContainer.process(controlContainerParameters, context);
  -             generatedControls.getMap().put(controlName, 
controlContainerResult.getResultEntries().get(OUTPUT));
                } else {
  +                Result controlResult = control.process(controlParameters, context);
                generatedControls.getMap().put(controlName, 
controlResult.getResultEntries().get(OUTPUT));
                }
  -             if ( controlState == Control.OPTIONAL_INVALID_CONTROL || controlState 
== Control.REQUIRED_INVALID_CONTROL  ) {
  -                     state = INVALID_STATE;
  -             } else if ( state == DEFAULT_STATE && ( controlState == 
Control.OPTIONAL_VALID_CONTROL || controlState == Control.REQUIRED_VALID_CONTROL ) ) {
  -                     state = VALID_STATE;
  -             }
           }
           Result composerResult = new Result(state, GENERATED_CONTROLS, 
generatedControls); 
  -        if ( errorsProcessorUri != null ) {
  -             Processor errorsTable = 
ProcessorManager.getInstance().getProcessor(errorsProcessorUri);
  +        if ( errorsProcessorUri instanceof URI ) {
  +             Processor errorsTable = 
ProcessorManager.getInstance().getProcessor((URI)errorsProcessorUri);
                List errorList = new ArrayList();
                for ( Iterator i = context.getInformations().iterator(); i.hasNext(); 
) {
                        Information info = (Information)i.next();
  
  
  
  1.3       +10 -10    
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Control.java
  
  Index: Control.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Control.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Control.java      5 May 2004 15:32:44 -0000       1.2
  +++ Control.java      5 May 2004 17:53:12 -0000       1.3
  @@ -69,15 +69,6 @@
           return new Result(state, OUTPUT, renderFragment(fragment, parameter));
       }
   
  -    public ParameterDescriptor getParameterDescriptor(Map parameter, Context 
context) throws ProcessException {
  -        URI actionUri = (URIResource)parameter.get(ACTION);
  -        Processor action = ProcessorManager.getInstance().getProcessor(actionUri);
  -        String parameterName = parameter.get(PARAMETER).toString();
  -        ParameterDescriptor parameterDescriptor = 
ProcessorHelper.getParameterDescriptor(action, parameterName);
  -        if ( parameterDescriptor == null ) throw new ProcessException(new 
ErrorMessage("control/actionParameterNotFound", new Object[] { parameterName, 
actionUri }));
  -        return parameterDescriptor;
  -    }
  -
       public void configure(StreamableResource config) throws ConfigurationException {
           super.configure(config);
           ParameterDescriptor[] parentParameterDescriptors = 
super.getParameterDescriptors();
  @@ -116,6 +107,15 @@
   
       public ResultDescriptor getResultDescriptor() {
           return resultDescriptor;
  +    }
  +
  +    static ParameterDescriptor getParameterDescriptor(Map parameter, Context 
context) throws ProcessException {
  +        URI actionUri = (URIResource)parameter.get(ACTION);
  +        Processor action = ProcessorManager.getInstance().getProcessor(actionUri);
  +        String parameterName = parameter.get(PARAMETER).toString();
  +        ParameterDescriptor parameterDescriptor = 
ProcessorHelper.getParameterDescriptor(action, parameterName);
  +        if ( parameterDescriptor == null ) throw new ProcessException(new 
ErrorMessage("control/actionParameterNotFound", new Object[] { parameterName, 
actionUri }));
  +        return parameterDescriptor;
       }
   
       protected String getName() {
  
  
  
  1.4       +14 -4     
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Trigger.java
  
  Index: Trigger.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Trigger.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Trigger.java      5 May 2004 15:32:44 -0000       1.3
  +++ Trigger.java      5 May 2004 17:53:12 -0000       1.4
  @@ -3,8 +3,10 @@
   import java.util.Map;
   
   import org.apache.slide.projector.engine.Process;
  +import org.apache.slide.projector.engine.ProcessorManager;
   import org.apache.slide.projector.ConfigurationException;
   import org.apache.slide.projector.Context;
  +import org.apache.slide.projector.Resource;
   import org.apache.slide.projector.Result;
   import org.apache.slide.projector.URI;
   import org.apache.slide.projector.descriptor.BooleanValueDescriptor;
  @@ -14,6 +16,7 @@
   import org.apache.slide.projector.i18n.ParameterMessage;
   import org.apache.slide.projector.processor.TemplateRenderer;
   import org.apache.slide.projector.resource.BooleanResource;
  +import org.apache.slide.projector.resource.NullResource;
   import org.apache.slide.projector.resource.StreamableResource;
   import org.apache.slide.projector.resource.StringResource;
   
  @@ -27,6 +30,7 @@
       public final static String ACTION = "action";
       public final static String LAST_STEP = "last-step";
       public final static String VALIDATE = "validate";
  +     public final static String BOOKMARK = "bookmark";
   
       private ParameterDescriptor[] parameterDescriptors;
   
  @@ -35,10 +39,14 @@
       }
   
       public Result process(Map parameter, Context context) throws Exception {
  -        String targetStep = parameter.get(Process.STEP).toString();
  +     Resource bookmark = (Resource)parameter.get(BOOKMARK);
  +     if ( bookmark instanceof NullResource ) {
  +             bookmark = context.getBookmark();
  +     }
  +     String targetStep = parameter.get(Process.STEP).toString();
           BooleanResource validate = (BooleanResource)parameter.get(VALIDATE);
           URI actionUri = (URI)parameter.get(ACTION);
  -        String instruction = actionUri + ";" + validate + ";" + targetStep;
  +        String instruction = actionUri + ";" + validate + ";" + targetStep + ";" + 
bookmark;
           parameter.put(INSTRUCTION, new StringResource(instruction));
           return new Result(OK, OUTPUT, renderFragment(getName(), parameter));
       }
  @@ -58,8 +66,10 @@
                   new ParameterDescriptor(ACTION, new 
ParameterMessage("trigger/action"), new URIValueDescriptor());
           parameterDescriptors[parentParameterDescriptors.length ] =
               new ParameterDescriptor(Process.STEP, new 
ParameterMessage("trigger/step"), new StringValueDescriptor());
  -        parameterDescriptors[parentParameterDescriptors.length + 2] =
  +        parameterDescriptors[parentParameterDescriptors.length + 1] =
               new ParameterDescriptor(VALIDATE, new 
ParameterMessage("trigger/validate"), new BooleanValueDescriptor(), 
BooleanResource.TRUE);
  +        parameterDescriptors[parentParameterDescriptors.length + 2] =
  +            new ParameterDescriptor(BOOKMARK, new 
ParameterMessage("trigger/bookmark"), new URIValueDescriptor(), NullResource.NULL );
       }
   
       public ParameterDescriptor[] getParameterDescriptors() {
  
  
  
  1.4       +22 -27    
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Form.java
  
  Index: Form.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Form.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Form.java 5 May 2004 15:32:44 -0000       1.3
  +++ Form.java 5 May 2004 17:53:12 -0000       1.4
  @@ -27,6 +27,7 @@
   import org.apache.slide.projector.descriptor.*;
   import org.apache.slide.projector.engine.Process;
   import org.apache.slide.projector.engine.ContentType;
  +import org.apache.slide.projector.engine.ProcessorManager;
   import org.apache.slide.projector.i18n.DefaultMessage;
   import org.apache.slide.projector.i18n.ErrorMessage;
   import org.apache.slide.projector.i18n.ParameterMessage;
  @@ -79,8 +80,8 @@
        String domain = parameter.get(DOMAIN).toString();
        URI actionUri = (URI)parameter.get(ACTION);
        Locale locale = ((LocaleResource)parameter.get(LOCALE)).getLocale();
  -        boolean validate = 
((BooleanResource)parameter.get(VALIDATE)).booleanValue();
           List informations = context.getInformations();
  +        parameter.put(HANDLER, 
ProcessorManager.getInstance().process(ProcessorManager.URL, parameter.get(HANDLER), 
context));
           MapResource controlDescriptions = new MapResource();
           for (int i = 0; i < parameterDescriptors.length; i++) {
                String parameterName = parameterDescriptors[i].getName(); 
  @@ -110,45 +111,39 @@
       public void configure(StreamableResource config) throws ConfigurationException {
           super.configure(config);
           ParameterDescriptor[] parentParameterDescriptors = 
super.getParameterDescriptors();
  -        parameterDescriptors = new 
ParameterDescriptor[parentParameterDescriptors.length + 6 ];
           int counter = 0;
  +        List parameterList = new ArrayList();
           for (int i = 0; i < parentParameterDescriptors.length; i++) {
               if 
(parentParameterDescriptors[i].getName().startsWith(CONTROL_IDENTIFIER)) {
  -                parameterDescriptors[counter] = new 
ParameterDescriptor(parentParameterDescriptors[i].getName(),
  +                parameterList.add(new 
ParameterDescriptor(parentParameterDescriptors[i].getName(),
                           new ParameterMessage("form/control"),
                           new MapValueDescriptor(new ParameterDescriptor[] {
                               new ParameterDescriptor(CONTROL, new 
ParameterMessage("form/control"), new URIValueDescriptor()),
                               new ParameterDescriptor(Control.ACTION, new 
ParameterMessage("control/action"), new URIValueDescriptor(), NullResource.NULL),
                               new ParameterDescriptor(Control.PARAMETER, new 
ParameterMessage("control/parameter"), new StringValueDescriptor()),
  -                        }));
  -                counter++;
  +                        })));
               } else if 
(parentParameterDescriptors[i].getName().startsWith(TRIGGER_IDENTIFIER)) {
  -                    parameterDescriptors[counter] = new 
ParameterDescriptor(parentParameterDescriptors[i].getName(),
  +                    parameterList.add(new 
ParameterDescriptor(parentParameterDescriptors[i].getName(),
                               new ParameterMessage("form/trigger"),
                               new MapValueDescriptor(new ParameterDescriptor[] {
                                   new ParameterDescriptor(CONTROL, new 
ParameterMessage("form/trigger"), new URIValueDescriptor()),
                                   new ParameterDescriptor(Trigger.ACTION, new 
ParameterMessage("trigger/action"), new URIValueDescriptor(), NullResource.NULL),
                                   new ParameterDescriptor(Process.STEP, new 
ParameterMessage("trigger/step"),  new ResourceValueDescriptor(), new NullResource()),
  -                            }));
  -                    counter++;
  -            } else if (!parentParameterDescriptors[i].getName().equals(FRAGMENT)) {
  -                parameterDescriptors[counter] = parentParameterDescriptors[i];
  -                counter++;
  +                            })));
  +            } else if (!parentParameterDescriptors[i].getName().equals(FRAGMENT) 
  +                     && 
!parentParameterDescriptors[i].getName().equals(CONTROL_DESCRIPTIONS)
  +                                     && 
!parentParameterDescriptors[i].getName().equals(HANDLER)
  +                                     && 
!parentParameterDescriptors[i].getName().equals(METHOD)) {
  +                parameterList.add(parentParameterDescriptors[i]);
               }
           }
  -        parameterDescriptors[counter] =
  -             new ParameterDescriptor(HANDLER, new ParameterMessage("form/handler"), 
new URIValueDescriptor(), Constants.DEFAULT_FORM_HANDLER);
  -        parameterDescriptors[counter+1] =
  -             new ParameterDescriptor(METHOD, new ParameterMessage("form/method"), 
new StringValueDescriptor(methods), new StringResource(POST));
  -        parameterDescriptors[counter+2] =
  -             new ParameterDescriptor(LOCALE, new ParameterMessage("form/locale"), 
new LocaleValueDescriptor());
  -        parameterDescriptors[counter+3] =
  -             new ParameterDescriptor(ACTION, new ParameterMessage("form/action"), 
new URIValueDescriptor());
  -        parameterDescriptors[counter+4] =
  -             new ParameterDescriptor(STORE, new ParameterMessage("form/store"), new 
StringValueDescriptor(Store.stores));
  -        parameterDescriptors[counter+5] =
  -             new ParameterDescriptor(DOMAIN, new ParameterMessage("form/domain"), 
new StringValueDescriptor());
  -
  +        parameterList.add(new ParameterDescriptor(HANDLER, new 
ParameterMessage("form/handler"), new URIValueDescriptor(), 
Constants.DEFAULT_FORM_HANDLER));
  +        parameterList.add(new ParameterDescriptor(METHOD, new 
ParameterMessage("form/method"), new StringValueDescriptor(methods), new 
StringResource(POST)));
  +        parameterList.add(new ParameterDescriptor(LOCALE, new 
ParameterMessage("form/locale"), new LocaleValueDescriptor()));
  +        parameterList.add(new ParameterDescriptor(ACTION, new 
ParameterMessage("form/action"), new URIValueDescriptor()));
  +        parameterList.add(new ParameterDescriptor(STORE, new 
ParameterMessage("form/store"), new StringValueDescriptor(Store.stores)));
  +        parameterList.add(new ParameterDescriptor(DOMAIN, new 
ParameterMessage("form/domain"), new StringValueDescriptor()));
  +        parameterDescriptors = (ParameterDescriptor[])parameterList.toArray(new 
ParameterDescriptor[parameterList.size()]);
           try {
               defaultTemplate = getRequiredFragment(DEFAULT_FORM);
           } catch ( ProcessException exception ) {
  
  
  
  1.5       +6 -4      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/FormHandler.java
  
  Index: FormHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/FormHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FormHandler.java  5 May 2004 15:32:44 -0000       1.4
  +++ FormHandler.java  5 May 2004 17:53:12 -0000       1.5
  @@ -25,12 +25,12 @@
   
   public class FormHandler implements Processor {
        private final static String FORM_PARAMETER_IDENTIFIER = "form:";
  -
  +     
        private final static ParameterDescriptor[] parameterDescriptors = new 
ParameterDescriptor[] {
           new ParameterDescriptor(Trigger.INSTRUCTION, new 
ParameterMessage("formHandler/instruction"),  new StringValueDescriptor()),
           new ParameterDescriptor(Trigger.LAST_STEP, new 
ParameterMessage("formHandler/last-step"), new URIValueDescriptor()),
           new ParameterDescriptor(ControlComposer.STORE, new 
ParameterMessage("formHandler/store"),  new StringValueDescriptor(Store.stores)),
  -        new ParameterDescriptor(ControlComposer.DOMAIN, new 
ParameterMessage("formHandler/form-step"),  new StringValueDescriptor())
  +        new ParameterDescriptor(ControlComposer.DOMAIN, new 
ParameterMessage("formHandler/domain"),  new StringValueDescriptor())
       };
   
        private final static ResultDescriptor resultDescriptor = new ResultDescriptor(
  @@ -45,6 +45,7 @@
                URI actionURI = new URIResource(tokenizer.nextToken());
                boolean validate = 
Boolean.valueOf(tokenizer.nextToken()).booleanValue();
                String targetStep = tokenizer.nextToken();
  +             URI bookmarkUri = new URIResource(tokenizer.nextToken());
                String lastStep = parameter.get(Trigger.LAST_STEP).toString();
                String domain = parameter.get(ControlComposer.DOMAIN).toString();
                Store store = 
context.getStore(StoreHelper.getStoreByName(parameter.get(ControlComposer.STORE).toString()));
  @@ -58,6 +59,7 @@
                } else {
                        map = mapResource.getMap();
                }
  +        map.put(ControlComposer.VALIDATE, new BooleanResource(validate));
        for ( Iterator i = parameter.entrySet().iterator(); i.hasNext(); ) {
                Map.Entry entry = (Map.Entry)i.next();
                String key = (String)entry.getKey();
  @@ -75,7 +77,7 @@
        }
        // 4. Launch target step if validation is successfull
        map.put(Process.STEP, targetStep);
  -             Processor bookmark = 
ProcessorManager.getInstance().getProcessor(context.getBookmark());
  +             Processor bookmark = 
ProcessorManager.getInstance().getProcessor(bookmarkUri);
           return bookmark.process(parameter,  context);
       }
   
  
  
  
  1.2       +7 -3      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/util/ProcessorHelper.java
  
  Index: ProcessorHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/util/ProcessorHelper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorHelper.java      3 May 2004 14:20:29 -0000       1.1
  +++ ProcessorHelper.java      5 May 2004 17:53:12 -0000       1.2
  @@ -29,8 +29,12 @@
           String parameterName = null;
           for ( int i = 0; i < parameterDescriptors.length; i++ ) {
               parameterName = parameterDescriptors[i].getName();
  -            Resource parameterValue =  validate(parameterDescriptors[i], 
parameters.get(parameterName), context);
  -            parameters.put(parameterName, parameterValue);
  +            try {
  +             Resource parameterValue =  validate(parameterDescriptors[i], 
parameters.get(parameterName), context);
  +                parameters.put(parameterName, parameterValue);
  +            } catch ( ValidationException exception ) {
  +             throw new ValidationException(new 
ErrorMessage("parameterValidationFailed", new String[] { parameterName }), exception);
  +            }
           }
       }
   
  
  
  
  1.2       +4 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/resource/BooleanResource.java
  
  Index: BooleanResource.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/resource/BooleanResource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BooleanResource.java      3 May 2004 14:20:24 -0000       1.1
  +++ BooleanResource.java      5 May 2004 17:53:12 -0000       1.2
  @@ -24,6 +24,10 @@
           return CONTENT_TYPE;
       }
   
  +    public String toString() {
  +     return String.valueOf(booleanValue);
  +    }
  +    
       public void save(XMLStringWriter writer) {
           writer.writeElementWithPCData(XMLWriter.createStartTag("value"), 
XMLEncode.xmlEncodeText(String.valueOf(booleanValue)), 
XMLWriter.createEndTag("value"));
       }
  
  
  

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

Reply via email to