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/10 18:54:25 UTC
cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor ParameterDescriptor.java MapValueDescriptor.java
dflorey 2004/05/10 09:54:25
Modified: proposals/projector/src/java/org/apache/slide/projector/engine
HttpContext.java Process.java
proposals/projector/src/java/org/apache/slide/projector/processor/form
ControlComposer.java Form.java FormHandler.java
FormGenerator.java Trigger.java
proposals/projector/src/java/org/apache/slide/projector/processor/tree
TreeRenderer.java
proposals/projector/src/java/org/apache/slide/projector/processor
TemplateRenderer.java TemplateMapRenderer.java
TemplateArrayRenderer.java
proposals/projector/src/java/org/apache/slide/projector/util
StoreHelper.java ProcessorHelper.java
proposals/projector/src/java/org/apache/slide/projector/descriptor
ParameterDescriptor.java MapValueDescriptor.java
Added: proposals/projector/src/java/org/apache/slide/projector/engine
Test.java
Removed: proposals/projector/src/java/org/apache/slide/projector/engine
TestServlet.java
Log:
Improved form handling (wizard style)
Revision Changes Path
1.3 +1 -1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/HttpContext.java
Index: HttpContext.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/HttpContext.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- HttpContext.java 6 May 2004 12:54:11 -0000 1.2
+++ HttpContext.java 10 May 2004 16:54:24 -0000 1.3
@@ -248,7 +248,7 @@
store.dispose(domain);
}
- private MapResource getDomain() throws IOException {
+ public MapResource getDomain() throws IOException {
String domain = getProcess().toString();
MapResource mapResource = (MapResource)store.get(domain);
if ( mapResource == null ) {
1.4 +12 -22 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Process.java
Index: Process.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Process.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Process.java 6 May 2004 12:54:11 -0000 1.3
+++ Process.java 10 May 2004 16:54:24 -0000 1.4
@@ -10,7 +10,6 @@
import org.apache.slide.projector.i18n.DefaultMessage;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
-import org.apache.slide.projector.resource.MapResource;
import org.apache.slide.projector.resource.NullResource;
import org.apache.slide.projector.resource.NumberResource;
import org.apache.slide.projector.resource.StreamableResource;
@@ -67,7 +66,7 @@
public Result process(Map parameter, Context context) throws Exception {
URI processorUri = ProcessorManager.getInstance().getProcessorDescriptor(this).getUri();
context.setProcess(processorUri);
- String nextStep = getStep(processorUri, parameter, context);
+ String nextStep = getStep(firstStep, context);
Result result = null;
Step step;
do {
@@ -119,6 +118,17 @@
return providedContextDescriptors;
}
+ static String getStep(String firstStep, Context context) {
+ Store sessionStore = context.getStore(Store.SESSION);
+ if ( sessionStore != null ) {
+ Resource stepParameter = (Resource)StoreHelper.get(sessionStore, context.getProcess().toString(), STEP);
+ if (stepParameter != null && stepParameter instanceof StringResource ) {
+ return stepParameter.toString();
+ }
+ }
+ return firstStep;
+ }
+
static void checkRoutings(Step step, Processor processor) throws ValidationException {
ResultDescriptor resultDescriptor = processor.getResultDescriptor();
StateDescriptor[] states = resultDescriptor.getStateDescriptors();
@@ -173,26 +183,6 @@
return key;
}
return key;
- }
-
- private String getStep(URI processorUri, Map parameter, Context context) {
- Store sessionStore = context.getStore(Store.SESSION);
- if ( sessionStore != null ) {
- try {
- MapResource mapResource = (MapResource)sessionStore.get(processorUri.toString());
- if ( mapResource != null ) {
- Map map = mapResource.getMap();
- Resource stepParameter = (Resource)map.get(STEP);
- if (stepParameter != null && stepParameter instanceof StringResource ) {
- return stepParameter.toString();
- }
- }
- } catch ( IOException exception ) {
- logger.log(Level.SEVERE, "Error while accessing session store", exception);
- return firstStep;
- }
- }
- return firstStep;
}
private Map loadParameters(Step step, Processor processor, Map parameter, Result previousResult, Context context) throws Exception {
1.1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Test.java
Index: Test.java
===================================================================
package org.apache.slide.projector.engine;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.Information;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Resource;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.Store;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.descriptor.ParameterDescriptor;
import org.apache.slide.projector.descriptor.ResultDescriptor;
import org.apache.slide.projector.descriptor.URIValueDescriptor;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.processor.form.Control;
import org.apache.slide.projector.processor.form.ControlComposer;
import org.apache.slide.projector.processor.form.FormGenerator;
import org.apache.slide.projector.resource.MapResource;
import org.apache.slide.projector.resource.NullResource;
import org.apache.slide.projector.resource.StringResource;
import org.apache.slide.projector.resource.URIResource;
import org.apache.slide.projector.util.ProcessorHelper;
public class Test implements Processor {
private final static URI FORM_PROCESSOR = new URIResource("/formGenerator");
private final static URI RESULT_RENDERER = new URIResource("/result");
private final static String PROCESSOR = "processor";
private final static String FORM_STEP = "form";
private final static String PROCESS_STEP = "process";
private final static String RESULT_STEP = "result";
private final static ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[] {
new ParameterDescriptor(PROCESSOR, new ParameterMessage("test/parameter/processor"), new URIValueDescriptor(), NullResource.NULL),
};
public Result process(Map parameter, Context context) throws Exception {
context.setBookmark(ProcessorManager.getInstance().getURI(this));
Resource uri = (Resource)parameter.get(PROCESSOR);
if ( uri == null || uri == NullResource.NULL ) {
uri = (URI)context.getStore(Store.SESSION).get(PROCESSOR);
}
context.setProcess((URI)uri);
context.getStore(Store.SESSION).put(PROCESSOR, uri);
Resource stepResource = (Resource)context.getStore(Store.FORM).get(Process.STEP);
String step;
if ( stepResource == null ) {
step = FORM_STEP;
} else {
step = stepResource.toString();
}
context.setStep(step);
Processor formProcessor = ProcessorManager.getInstance().getProcessor(FORM_PROCESSOR);
Processor resultRenderer = ProcessorManager.getInstance().getProcessor(RESULT_RENDERER);
Processor processor = ProcessorManager.getInstance().getProcessor((URI)uri);
parameter.put(Control.ACTION, uri);
parameter.put(ControlComposer.LOCALE, ProcessorManager.getInstance().process(ProcessorManager.LOCALE_RESOLVER, context.getStore(Store.REQUEST_HEADER).get("accept-language"), context));
parameter.put(FormGenerator.TARGET_STEP, PROCESS_STEP);
Result result = null;
if ( step.equals(FORM_STEP) ) {
result = formProcessor.process(parameter, context);
} else if ( step.equals(PROCESS_STEP) ) {
parameter.putAll(((MapResource)((HttpContext.FormStore)context.getStore(Store.FORM)).getDomain()).getMap());
ProcessorHelper.validate(processor.getParameterDescriptors(), parameter, context);
Result processorResult = processor.process(parameter, context);
if ( hasErrors(context.getInformations()) ) {
context.setStep(FORM_STEP);
result = formProcessor.process(parameter, context);
} else {
Map resultParameters = new HashMap();
resultParameters.put("state", new StringResource(processorResult.getState()));
ProcessorHelper.validate(resultRenderer.getParameterDescriptors(), resultParameters, context);
result = resultRenderer.process(resultParameters, context);
((HttpContext.FormStore)context.getStore(Store.FORM)).clear();
}
} else {
((HttpContext.FormStore)context.getStore(Store.FORM)).clear();
return Result.OK;
}
return result;
}
protected boolean hasErrors(List informations) {
for ( Iterator i = informations.iterator(); i.hasNext(); ) {
Information info = (Information)i.next();
if ( info.getSeverity() == Information.ERROR ) {
return true;
}
}
return false;
}
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptors;
}
public ResultDescriptor getResultDescriptor() {
return null;
}
}
1.6 +16 -5 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.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ControlComposer.java 6 May 2004 16:44:54 -0000 1.5
+++ ControlComposer.java 10 May 2004 16:54:24 -0000 1.6
@@ -2,6 +2,7 @@
import org.apache.slide.projector.*;
import org.apache.slide.projector.descriptor.*;
+import org.apache.slide.projector.engine.HttpContext;
import org.apache.slide.projector.engine.Process;
import org.apache.slide.projector.engine.ProcessorManager;
import org.apache.slide.projector.i18n.DefaultMessage;
@@ -115,6 +116,7 @@
new ParameterDescriptor(Trigger.ACTION, new ParameterMessage("controlComposer/triggerDescriptions/action"), new URIValueDescriptor(), NullResource.NULL),
new ParameterDescriptor(Trigger.BOOKMARK, new ParameterMessage("controlComposer/triggerDescriptions/bookmark"), new URIValueDescriptor(), NullResource.NULL),
new ParameterDescriptor(Trigger.VALIDATE, new ParameterMessage("controlComposer/triggerDescriptions/validate"), new BooleanValueDescriptor(), BooleanResource.TRUE),
+ new ParameterDescriptor(Trigger.INVOLVED_PARAMETERS, new ParameterMessage("trigger/involvedParameters"), new ArrayValueDescriptor(new StringValueDescriptor()), NullResource.NULL),
new ParameterDescriptor(Process.STEP, new ParameterMessage("controlComposer/triggerDescriptions/step"), new StringValueDescriptor()),
new ParameterDescriptor(TRIGGER, new ParameterMessage("controlComposer/triggerDescriptions/trigger"), new URIValueDescriptor()),
new ParameterDescriptor(TRIGGER_CONTAINER, new ParameterMessage("controlComposer/triggerDescriptions/triggerContainer"), new URIValueDescriptor(), NullResource.NULL)
@@ -143,8 +145,9 @@
Locale locale = ((LocaleResource)parameter.get(LOCALE)).getLocale();
String state = DEFAULT_STATE;
List informations = context.getInformations();
- MapResource mapResource = (MapResource)context.getStore(Store.SESSION).get(context.getProcess().toString());
+ MapResource mapResource = (MapResource)((HttpContext.FormStore)context.getStore(Store.FORM)).getDomain();
List generatedControls = new ArrayList();
+ List involvedParameters = new ArrayList();
for (int i = 0; i < controlDescriptions.length; i++ ) {
Map controlParameters = ((MapResource)controlDescriptions[i]).getMap();
String controlName = controlParameters.get(CONTROL_NAME).toString();
@@ -161,6 +164,7 @@
Resource controlContainerUri = (Resource)controlParameters.get(CONTROL_CONTAINER);
ParameterDescriptor parameterDescriptor = Control.getParameterDescriptor(controlParameters, context);
String parameterName = parameterDescriptor.getName();
+ involvedParameters.add(new StringResource(parameterName));
ParameterMessage description = (ParameterMessage)parameterDescriptor.getDescription();
boolean required = parameterDescriptor.isRequired();
String controlState = Control.OPTIONAL_CONTROL;
@@ -171,7 +175,9 @@
boolean validate = false;
if ( mapResource != null ) {
controlValue = mapResource.getMap().get(parameterName);
- validate = ((BooleanResource)mapResource.getMap().get(VALIDATE)).booleanValue();
+ validate = false;
+ BooleanResource validateResource = ((BooleanResource)mapResource.getMap().get(VALIDATE));
+ if ( validateResource != null ) validate = validateResource.booleanValue();
}
if ( validate ) {
try {
@@ -190,7 +196,7 @@
explodeInformations(controlParameters, informations, parameterName, locale);
} else {
if ( required ) {
- controlState = Control.REQUIRED_INVALID_CONTROL;
+ controlState = Control.REQUIRED_VALID_CONTROL;
} else {
controlState = Control.OPTIONAL_VALID_CONTROL;
}
@@ -237,6 +243,11 @@
for (int i = 0; i < triggerDescriptions.length; i++ ) {
Map triggerParameters = ((MapResource)triggerDescriptions[i]).getMap();
String triggerName = triggerParameters.get(TRIGGER_NAME).toString();
+ Resource involvedTriggerParameters = (Resource)triggerParameters.get(Trigger.INVOLVED_PARAMETERS);
+ if ( involvedTriggerParameters == NullResource.NULL ) {
+ involvedTriggerParameters = new ArrayResource((StringResource[])involvedParameters.toArray(new StringResource[involvedParameters.size()]));
+ }
+ triggerParameters.put(Trigger.INVOLVED_PARAMETERS, involvedTriggerParameters);
URI triggerUri = (URI)triggerParameters.get(TRIGGER);
Trigger trigger = (Trigger)ProcessorManager.getInstance().getProcessor(triggerUri);
Resource triggerActionUri = (Resource)triggerParameters.get(Trigger.ACTION);
@@ -260,9 +271,9 @@
throw new ValidationException(new ErrorMessage("controlComposer/triggerContainerParameterInvalid", new Object[] { triggerContainerUri }), exception);
}
Result triggerContainerResult = triggerContainer.process(triggerContainerParameters, context);
- generatedControls.add(new MapResource(triggerName, (Resource)triggerContainerResult.getResultEntries().get(OUTPUT)));
+ generatedTriggers.add(new MapResource(triggerName, (Resource)triggerContainerResult.getResultEntries().get(OUTPUT)));
} else {
- generatedControls.add(new MapResource(triggerName, (Resource)triggerResult.getResultEntries().get(OUTPUT)));
+ generatedTriggers.add(new MapResource(triggerName, (Resource)triggerResult.getResultEntries().get(OUTPUT)));
}
}
composerResult.addResultEntry(GENERATED_TRIGGERS, new ArrayResource((Resource [])generatedTriggers.toArray(new Resource[generatedTriggers.size()])));
1.7 +13 -7 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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Form.java 6 May 2004 16:44:54 -0000 1.6
+++ Form.java 10 May 2004 16:54:24 -0000 1.7
@@ -31,6 +31,7 @@
import org.apache.slide.projector.i18n.DefaultMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.resource.*;
+import org.apache.slide.projector.util.ProcessorHelper;
import java.util.*;
@@ -72,10 +73,10 @@
((MapResource)value).getMap().put(TRIGGER_NAME, parameterName);
triggerDescriptions.add(value);
}
-
}
parameter.put(ControlComposer.CONTROL_DESCRIPTIONS, new ArrayResource((Resource[])controlDescriptions.toArray(new Resource[controlDescriptions.size()])));
parameter.put(ControlComposer.TRIGGER_DESCRIPTIONS, new ArrayResource((Resource[])triggerDescriptions.toArray(new Resource[triggerDescriptions.size()])));
+ ProcessorHelper.validate(super.getParameterDescriptors(), parameter, context);
Result controlComposerResult = super.process(parameter, context);
Resource[] generatedControls = ((ArrayResource)controlComposerResult.getResultEntries().get(GENERATED_CONTROLS)).getArray();
for ( int i = 0; i < generatedControls.length; i++ ) {
@@ -111,19 +112,24 @@
new ParameterMessage("form/control"),
new MapValueDescriptor(new ParameterDescriptor[] {
new ParameterDescriptor(CONTROL, new ParameterMessage("form/control"), new URIValueDescriptor()),
+ new ParameterDescriptor(CONTROL_CONTAINER, new ParameterMessage("form/controlContainer"), new URIValueDescriptor(), NullResource.NULL),
new ParameterDescriptor(Control.ACTION, new ParameterMessage("control/action"), new URIValueDescriptor(), NullResource.NULL),
- new ParameterDescriptor(Control.PARAMETER, new ParameterMessage("control/parameter"), new StringValueDescriptor()),
+ new ParameterDescriptor(Control.PARAMETER, new ParameterMessage("control/parameter"), new StringValueDescriptor())
})));
} else if (parentParameterDescriptors[i].getName().startsWith(TRIGGER_IDENTIFIER)) {
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, new ParameterMessage("form/trigger"), new URIValueDescriptor()),
+ new ParameterDescriptor(TRIGGER_CONTAINER, new ParameterMessage("form/triggerContainer"), new URIValueDescriptor(), NullResource.NULL),
new ParameterDescriptor(Trigger.ACTION, new ParameterMessage("trigger/action"), new URIValueDescriptor(), NullResource.NULL),
- new ParameterDescriptor(Process.STEP, new ParameterMessage("trigger/step"), new ResourceValueDescriptor(), new NullResource()),
+ new ParameterDescriptor(Trigger.BOOKMARK, new ParameterMessage("trigger/bookmark"), new URIValueDescriptor(), NullResource.NULL),
+ new ParameterDescriptor(Trigger.VALIDATE, new ParameterMessage("trigger/validate"), new BooleanValueDescriptor(), BooleanResource.TRUE),
+ new ParameterDescriptor(Process.STEP, new ParameterMessage("trigger/step"), new ResourceValueDescriptor(), NullResource.NULL)
})));
} else if (!parentParameterDescriptors[i].getName().equals(FRAGMENT)
&& !parentParameterDescriptors[i].getName().equals(CONTROL_DESCRIPTIONS)
+ && !parentParameterDescriptors[i].getName().equals(TRIGGER_DESCRIPTIONS)
&& !parentParameterDescriptors[i].getName().equals(RENDERED_ERRORS)
&& !parentParameterDescriptors[i].getName().equals(HANDLER)
&& !parentParameterDescriptors[i].getName().equals(METHOD)) {
1.7 +17 -8 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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FormHandler.java 6 May 2004 12:54:11 -0000 1.6
+++ FormHandler.java 10 May 2004 16:54:24 -0000 1.7
@@ -13,8 +13,9 @@
import org.apache.slide.projector.util.ProcessorHelper;
import org.apache.slide.projector.engine.Process;
+import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
@@ -43,6 +44,10 @@
String targetStep = tokenizer.nextToken();
URI bookmarkUri = new URIResource(tokenizer.nextToken());
String domain = tokenizer.nextToken();
+ List involvedParamters = new ArrayList();
+ while ( tokenizer.hasMoreTokens() ) {
+ involvedParamters.add(tokenizer.nextToken());
+ }
Store store = context.getStore(Store.SESSION);
// 1. Store all (request) parameters into requested domain
Map map;
@@ -56,16 +61,20 @@
}
map.put(ControlComposer.VALIDATE, new BooleanResource(validate));
map.put(Process.STEP, new StringResource(targetStep));
- for ( Iterator i = parameter.entrySet().iterator(); i.hasNext(); ) {
- Map.Entry entry = (Map.Entry)i.next();
- String key = (String)entry.getKey();
- map.put(key, entry.getValue());
- }
+ map.putAll(parameter);
if ( validate ) {
// 2. Validate parameters
Processor processor = ProcessorManager.getInstance().getProcessor(actionURI);
try {
- ProcessorHelper.validate(processor.getParameterDescriptors(), parameter, context);
+ // validate only given parameters to enable wizard like forms
+ ParameterDescriptor[] parameterDescriptors = processor.getParameterDescriptors();
+ for ( int i = 0; i < parameterDescriptors.length; i++ ) {
+ String parameterName = parameterDescriptors[i].getName();
+ if ( involvedParamters.contains(parameterName) ) {
+ map.put(parameterName, ProcessorHelper.validate(parameterDescriptors[i], parameter.get(parameterName), context));
+ }
+ }
+ map.put(ControlComposer.VALIDATE, BooleanResource.FALSE);
} catch ( ValidationException exception ) {
// 3. Go back to form step if validation failes
map.put(Process.STEP, new StringResource(lastStep));
1.5 +14 -8 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/FormGenerator.java
Index: FormGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/FormGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FormGenerator.java 6 May 2004 16:44:54 -0000 1.4
+++ FormGenerator.java 10 May 2004 16:54:24 -0000 1.5
@@ -19,7 +19,9 @@
public class FormGenerator extends ControlComposer {
public final static String CONTROLS = "controls";
public final static String TRIGGERS = "triggers";
+ public final static String TARGET_STEP = "targetStep";
+ protected final static String TRIGGER_IMAGE = "image";
protected final static URI TEXTFIELD = new URIResource("/textfield");
protected final static URI TEXTAREA = new URIResource("/textarea");
protected final static URI LISTBOX = new URIResource("/listbox");
@@ -27,9 +29,10 @@
protected final static URI CHECKBOX = new URIResource("/checkbox");
protected final static URI ERRORS_TABLE = new URIResource("/errors");
protected final static URI TRIGGER_URI = new URIResource("/textbutton");
- protected final static URI TRIGGER_IMAGE = new URIResource("/files/contelligent/images/module2_corner_left.gif");
+ protected final static URI DEFAULT_TRIGGER_IMAGE = new URIResource("/files/contelligent/images/ok.gif");
protected final static URI DEFAULT_CONTROL_CONTAINER = new URIResource("/bigControl");
protected final static URI DEFAULT_TRIGGER_CONTAINER = new URIResource("/triggerContainer");
+ protected final static URI DEFAULT_ERROR_RENDERER = new URIResource("/errors");
protected final static String PROCESSOR_NAME = "processor-name";
protected final static String PROCESSOR_TITLE = "processor-title";
@@ -70,13 +73,14 @@
MapResource triggerDescriptor = new MapResource();
triggerDescriptor.getMap().put(Trigger.ACTION, actionUri);
triggerDescriptor.getMap().put(Trigger.VALIDATE, BooleanResource.TRUE);
-// triggerDescriptor.getMap().put(Trigger.BOOKMARK, actionUri);
- triggerDescriptor.getMap().put(Process.STEP, "perform");
+ triggerDescriptor.getMap().put(Trigger.INVOLVED_PARAMETERS, NullResource.NULL);
+ triggerDescriptor.getMap().put(Process.STEP, parameter.get(TARGET_STEP));
triggerDescriptor.getMap().put(TRIGGER, TRIGGER_URI);
triggerDescriptor.getMap().put(TRIGGER_NAME, TRIGGER_URI);
- triggerDescriptor.getMap().put("image", TRIGGER_IMAGE);
+ triggerDescriptor.getMap().put(TRIGGER_IMAGE, ProcessorManager.getInstance().process(ProcessorManager.BINARY, DEFAULT_TRIGGER_IMAGE, "url", context));
triggerDescriptor.getMap().put(TRIGGER_CONTAINER, DEFAULT_TRIGGER_CONTAINER);
parameter.put(TRIGGER_DESCRIPTIONS, new ArrayResource(new Resource[] { triggerDescriptor }));
+ parameter.put(ERRORS_PROCESSOR, DEFAULT_ERROR_RENDERER);
parameter.put(HANDLER, ProcessorManager.getInstance().process(ProcessorManager.URL, Constants.DEFAULT_FORM_HANDLER, context));
parameter.put(METHOD, new StringResource(POST));
@@ -95,9 +99,9 @@
for ( int i = 0; i < generatedTriggers.length; i++ ) {
Iterator j = ((MapResource)generatedTriggers[i]).getMap().values().iterator();
StringResource renderedTrigger = (StringResource)j.next();
- buffer.append(renderedTrigger.toString());
+ triggerBuffer.append(renderedTrigger.toString());
}
- StringResource composedTriggers= new StringResource(buffer.toString());
+ StringResource composedTriggers= new StringResource(triggerBuffer.toString());
parameter.put(TRIGGERS, composedTriggers);
ProcessorDescriptor processorDescriptor = ProcessorManager.getInstance().getProcessorDescriptor(actionUri);
parameter.put(PROCESSOR_NAME, processorDescriptor.getName());
@@ -107,6 +111,7 @@
parameter.put(PROCESSOR_SMALL_ICON, ProcessorManager.getInstance().process(ProcessorManager.BINARY, processorDescriptor.getSmallIcon(), "url", context));
parameter.put(TITLE, processorDescriptor.getName());
parameter.put(STYLE, ((HttpContext)context).getContextPath() + ORANGE_STYLE);
+ parameter.put(ERRORS, controlComposerResult.getResultEntries().get(ControlComposer.RENDERED_ERRORS));
parameter.put(ERRORS_TITLE, "Fehler:");
Template template = defaultTemplate;
String state = controlComposerResult.getState();
@@ -122,7 +127,8 @@
super.configure(config);
parameterDescriptors = new ParameterDescriptor[] {
new ParameterDescriptor(ACTION, new ParameterMessage("formGenerator/action"), new URIValueDescriptor()),
- new ParameterDescriptor(LOCALE, new ParameterMessage("formGenerator/locale"), new LocaleValueDescriptor(), new LocaleResource(Locale.getDefault()))
+ new ParameterDescriptor(LOCALE, new ParameterMessage("formGenerator/locale"), new LocaleValueDescriptor(), new LocaleResource(Locale.getDefault())),
+ new ParameterDescriptor(TARGET_STEP, new ParameterMessage("formGenerator/targetStep"), new StringValueDescriptor())
};
try {
defaultTemplate = getRequiredFragment(DEFAULT_FORM);
1.7 +21 -7 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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Trigger.java 6 May 2004 16:44:54 -0000 1.6
+++ Trigger.java 10 May 2004 16:54:24 -0000 1.7
@@ -8,12 +8,14 @@
import org.apache.slide.projector.Resource;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.URI;
+import org.apache.slide.projector.descriptor.ArrayValueDescriptor;
import org.apache.slide.projector.descriptor.BooleanValueDescriptor;
import org.apache.slide.projector.descriptor.ParameterDescriptor;
import org.apache.slide.projector.descriptor.StringValueDescriptor;
import org.apache.slide.projector.descriptor.URIValueDescriptor;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.processor.TemplateRenderer;
+import org.apache.slide.projector.resource.ArrayResource;
import org.apache.slide.projector.resource.BooleanResource;
import org.apache.slide.projector.resource.NullResource;
import org.apache.slide.projector.resource.StreamableResource;
@@ -29,7 +31,9 @@
public final static String ACTION = "action";
public final static String VALIDATE = "validate";
public final static String BOOKMARK = "bookmark";
-
+ public final static String INVOLVED_PARAMETERS = "involved-parameters";
+ public final char SEPARATOR = ';';
+
private ParameterDescriptor[] parameterDescriptors;
public Trigger() {
@@ -41,18 +45,26 @@
if ( bookmark instanceof NullResource ) {
bookmark = context.getBookmark();
}
+ StringResource []involvedParameters = (StringResource[])((ArrayResource)parameter.get(INVOLVED_PARAMETERS)).getArray();
String targetStep = parameter.get(Process.STEP).toString();
- BooleanResource validate = (BooleanResource)parameter.get(VALIDATE);
- URI actionUri = (URI)parameter.get(ACTION);
- String instruction = actionUri + ";" + validate + ";" + context.getStep() + ";" + targetStep + ";" + bookmark + ";" +context.getProcess();
- parameter.put(INSTRUCTION, new StringResource(instruction));
+ BooleanResource validate = (BooleanResource)parameter.get(VALIDATE);
+ URI actionUri = (URI)parameter.get(ACTION);
+ StringBuffer buffer = new StringBuffer(128);
+ buffer.append(actionUri).append(SEPARATOR).append(validate).append(SEPARATOR).append(context.getStep()).append(SEPARATOR).append(targetStep).append(SEPARATOR).append(bookmark).append(SEPARATOR).append(context.getProcess());
+ if ( validate.booleanValue() ) {
+ for ( int i = 0; i < involvedParameters.length; i++ ) {
+ buffer.append(SEPARATOR).append(involvedParameters[i]);
+ }
+ }
+ String instruction = buffer.toString();
+ parameter.put(INSTRUCTION, new StringResource(instruction));
return new Result(OK, OUTPUT, renderFragment(getName(), parameter));
}
public void configure(StreamableResource config) throws ConfigurationException {
super.configure(config);
ParameterDescriptor[] parentParameterDescriptors = super.getParameterDescriptors();
- parameterDescriptors = new ParameterDescriptor[parentParameterDescriptors.length + 3];
+ parameterDescriptors = new ParameterDescriptor[parentParameterDescriptors.length + 4];
int counter = 0;
for ( int i = 0; i < parentParameterDescriptors.length; i++ ) {
if (!parentParameterDescriptors[i].getName().equals(FRAGMENT)) {
@@ -68,6 +80,8 @@
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 );
+ parameterDescriptors[parentParameterDescriptors.length + 3] =
+ new ParameterDescriptor(INVOLVED_PARAMETERS, new ParameterMessage("trigger/involvedParameters"), new ArrayValueDescriptor(new StringValueDescriptor()));
}
public ParameterDescriptor[] getParameterDescriptors() {
1.3 +1 -1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeRenderer.java
Index: TreeRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeRenderer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TreeRenderer.java 3 May 2004 15:50:40 -0000 1.2
+++ TreeRenderer.java 10 May 2004 16:54:24 -0000 1.3
@@ -42,7 +42,7 @@
public void configure(StreamableResource config) throws ConfigurationException {
super.configure(config);
List validMapEntries = new ArrayList();
- for ( Iterator i = parameterDescriptions.values().iterator(); i.hasNext(); ) {
+ for ( Iterator i = parameterDescriptions.iterator(); i.hasNext(); ) {
ParameterDescriptor parentParameter = (ParameterDescriptor)i.next();
if ( !parentParameter.getName().equals(FRAGMENT) ) {
validMapEntries.add(new ParameterDescriptor(parentParameter.getName(), new ParameterMessage("treeRenderer/mapEntry"), parentParameter.getValueDescriptor()));
1.3 +9 -9 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateRenderer.java
Index: TemplateRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateRenderer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TemplateRenderer.java 5 May 2004 15:32:44 -0000 1.2
+++ TemplateRenderer.java 10 May 2004 16:54:25 -0000 1.3
@@ -46,7 +46,7 @@
private ParameterDescriptor[] parameterDescriptors;
- protected Map parameterDescriptions;
+ protected List parameterDescriptions;
protected boolean fragments;
private Map templates;
@@ -57,7 +57,7 @@
// FIXME: Nested fragments
public void configure(StreamableResource config) throws ConfigurationException {
templates = new HashMap();
- parameterDescriptions = new HashMap();
+ parameterDescriptions = new ArrayList();
try {
String template = StreamHelper.streamToString(config);
// ignore sections marked as ignored
@@ -104,9 +104,7 @@
}
}
}
- parameterDescriptions.put(FRAGMENT, new ParameterDescriptor(
- FRAGMENT, new ParameterMessage("templateRenderer/fragment"),
- new StringValueDescriptor((String [])templates.keySet().toArray(new String[0])), new StringResource(DEFAULT_FRAGMENT)));
+ parameterDescriptions.add(new ParameterDescriptor(FRAGMENT, new ParameterMessage("templateRenderer/fragment"), new StringValueDescriptor((String [])templates.keySet().toArray(new String[0])), new StringResource(DEFAULT_FRAGMENT)));
if ( fragments ) {
if ( requiredFragments != null ) {
templates.put(DEFAULT_FRAGMENT, templates.get(requiredFragments[0]));
@@ -116,7 +114,7 @@
} else {
templates.put(DEFAULT_FRAGMENT, new Template(template));
}
- parameterDescriptors = (ParameterDescriptor [])parameterDescriptions.values().toArray(new ParameterDescriptor[0]);
+ parameterDescriptors = (ParameterDescriptor [])parameterDescriptions.toArray(new ParameterDescriptor[0]);
} catch (IOException ioexception) {
logger.log(Level.SEVERE, "Could not load configuration resource!");
}
@@ -293,7 +291,9 @@
} else {
parameterDescriptor = new ParameterDescriptor(variableName, new ParameterMessage("templateVariable", new String[] { variableName }), resourceValueDescriptor, new NullResource());
}
- parameterDescriptions.put(variableName, parameterDescriptor);
+ if ( !parameterDescriptions.contains(parameterDescriptor) ) {
+ parameterDescriptions.add(parameterDescriptor);
+ }
templateParameterDescriptors.put(variableName, parameterDescriptor);
currentPosition = close+TAG_CLOSE.length();
} else {
@@ -362,8 +362,8 @@
public ConditionalTemplateFragment(String variable) {
this.variable = variable;
optionalParameters.add(variable);
- if ( parameterDescriptions.containsKey(variable) ) {
- ((ResourceValueDescriptor)((ParameterDescriptor)parameterDescriptions.get(variable)).getValueDescriptor()).addAllowedContentType(NullResource.CONTENT_TYPE);
+ if ( parameterDescriptions.contains(variable) ) {
+ ((ResourceValueDescriptor)((ParameterDescriptor)parameterDescriptions.get(parameterDescriptions.indexOf(variable))).getValueDescriptor()).addAllowedContentType(NullResource.CONTENT_TYPE);
}
}
1.2 +1 -1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateMapRenderer.java
Index: TemplateMapRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateMapRenderer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TemplateMapRenderer.java 3 May 2004 14:20:24 -0000 1.1
+++ TemplateMapRenderer.java 10 May 2004 16:54:25 -0000 1.2
@@ -33,7 +33,7 @@
if ( repeatedFragments == null ) repeatedFragments = getDefinedFragments();
MapValueDescriptor mapValueDescriptor = new MapValueDescriptor();
List parameterDescriptorList = new ArrayList();
- for ( Iterator i = parameterDescriptions.values().iterator(); i.hasNext(); ) {
+ for ( Iterator i = parameterDescriptions.iterator(); i.hasNext(); ) {
ParameterDescriptor entryDescriptor = (ParameterDescriptor)i.next();
if ( entryDescriptor.getName() == FRAGMENT ) {
parameterDescriptorList.add(entryDescriptor);
1.2 +1 -1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateArrayRenderer.java
Index: TemplateArrayRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateArrayRenderer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TemplateArrayRenderer.java 3 May 2004 14:20:24 -0000 1.1
+++ TemplateArrayRenderer.java 10 May 2004 16:54:25 -0000 1.2
@@ -25,7 +25,7 @@
super.configure(config);
parameterDescriptors = new ParameterDescriptor[parameterDescriptions.size()];
int counter = 0;
- for ( Iterator i = parameterDescriptions.values().iterator(); i.hasNext(); ) {
+ for ( Iterator i = parameterDescriptions.iterator(); i.hasNext(); ) {
ParameterDescriptor entryDescriptor = (ParameterDescriptor)i.next();
if ( entryDescriptor.getName() == FRAGMENT ) {
parameterDescriptors[counter] = entryDescriptor;
1.2 +32 -0 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/util/StoreHelper.java
Index: StoreHelper.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/util/StoreHelper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StoreHelper.java 3 May 2004 14:20:29 -0000 1.1
+++ StoreHelper.java 10 May 2004 16:54:25 -0000 1.2
@@ -1,13 +1,45 @@
package org.apache.slide.projector.util;
+import org.apache.slide.projector.Resource;
import org.apache.slide.projector.Store;
+import org.apache.slide.projector.resource.MapResource;
+import java.io.IOException;
+import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
public class StoreHelper {
private static Logger logger = Logger.getLogger(StoreHelper.class.getName());
+ public static Object get(Store store, String domain, String key) {
+ try {
+ MapResource mapResource = (MapResource)store.get(domain);
+ if ( mapResource != null ) {
+ Map map = mapResource.getMap();
+ return (Resource)map.get(key);
+ }
+ } catch ( IOException exception ) {
+ logger.log(Level.SEVERE, "Error while accessing store", exception);
+ }
+ return null;
+ }
+
+ public static void put(Store store, String domain, String key, Resource value) {
+ try {
+ MapResource mapResource = (MapResource)store.get(domain);
+ if ( mapResource != null ) {
+ Map map = mapResource.getMap();
+ map.put(key, value);
+ } else {
+ mapResource = new MapResource(key, value);
+ store.put(domain, mapResource);
+ }
+ } catch ( IOException exception ) {
+ logger.log(Level.SEVERE, "Error while accessing store", exception);
+ }
+ }
+
public static int getStoreByName(String store) {
for ( int i = 0; i < Store.stores.length; i++ ) {
if ( Store.stores[i].equals(store) ) return i;
1.3 +4 -2 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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ProcessorHelper.java 5 May 2004 17:53:12 -0000 1.2
+++ ProcessorHelper.java 10 May 2004 16:54:25 -0000 1.3
@@ -45,8 +45,10 @@
} else {
parameterValue = parameterDescriptor.getDefaultValue();
}
+ } else if ( parameterValue.equals(parameterDescriptor.getDefaultValue()) ) {
+ return parameterDescriptor.getDefaultValue();
} else {
- parameterValue = parameterDescriptor.getValueDescriptor().validate(parameterValue, context);
+ parameterValue = parameterDescriptor.getValueDescriptor().validate(parameterValue, context);
}
return (Resource)parameterValue;
}
1.3 +5 -0 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/ParameterDescriptor.java
Index: ParameterDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/ParameterDescriptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParameterDescriptor.java 6 May 2004 12:54:12 -0000 1.2
+++ ParameterDescriptor.java 10 May 2004 16:54:25 -0000 1.3
@@ -43,4 +43,9 @@
public Resource getDefaultValue() {
return defaultValue;
}
+
+ public boolean equals(Object o) {
+ if ( o instanceof ParameterDescriptor && ((ParameterDescriptor)o).getName().equals(getName())) return true;
+ return false;
+ }
}
1.3 +6 -1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java
Index: MapValueDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MapValueDescriptor.java 5 May 2004 15:32:45 -0000 1.2
+++ MapValueDescriptor.java 10 May 2004 16:54:25 -0000 1.3
@@ -71,7 +71,12 @@
map.put(key, parameterDescriptor.getDefaultValue());
}
} else {
- map.put(key, entryDescriptor.validate(map.get(key), context));
+ Object object = map.get(key);
+ if ( object.equals(parameterDescriptor.getDefaultValue())) {
+ map.put(key, object);
+ } else {
+ map.put(key, entryDescriptor.validate(object, context));
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org