You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/05/05 19:53:12 UTC

cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/resource BooleanResource.java

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: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org