tcurdt 02/04/03 23:02:09
Modified: src/scratchpad/src/org/apache/cocoon/precept Instance.java
InstanceTransformer.java Preceptor.java
src/scratchpad/src/org/apache/cocoon/precept/acting
AbstractPreceptorAction.java
PreceptorDemoAction.java
src/scratchpad/src/org/apache/cocoon/precept/preceptors/easyrelax
PreceptorImpl.java
src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple
AttributeNode.java ElementNode.java
InstanceImpl.java Node.java
Log:
moved the validation out of the instance into the preceptor,
use a Collection instead of List for returning constraints
Revision Changes Path
1.3 +2 -5
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/Instance.java
Index: Instance.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/Instance.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Instance.java 25 Mar 2002 23:23:54 -0000 1.2
+++ Instance.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -55,23 +55,20 @@
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
-import java.util.List;
-
/*
* @version: Mar 15, 2002
* @author: Torsten Curdt <[EMAIL PROTECTED]>
*/
public interface Instance extends Component {
public String ROLE = "org.apache.cocoon.precept.Instance";
+
public void setValue(String xpath, Object value) throws
PreceptorViolationException, InvalidXPathSyntaxException;
public void setValue(String xpath, Object value, Context context) throws
PreceptorViolationException, InvalidXPathSyntaxException;
public Object getValue(String xpath) throws InvalidXPathSyntaxException,
NoSuchNodeException;
public void setPreceptor( Preceptor preceptor );
- public List validate(String xpath, Context context) throws
InvalidXPathSyntaxException, NoSuchNodeException;
- public List validate(Context context) throws InvalidXPathSyntaxException;
-
public Preceptor getPreceptor();
+
public void toSAX( ContentHandler handler, boolean constraints) throws
SAXException;
public long getLastModified();
}
1.4 +3 -2
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/InstanceTransformer.java
Index: InstanceTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/InstanceTransformer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InstanceTransformer.java 26 Mar 2002 19:56:44 -0000 1.3
+++ InstanceTransformer.java 4 Apr 2002 07:02:09 -0000 1.4
@@ -70,6 +70,7 @@
import java.util.Map;
import java.util.List;
import java.util.Iterator;
+import java.util.Collection;
/*
* @author: Torsten Curdt <[EMAIL PROTECTED]>
@@ -148,7 +149,7 @@
}
}
else if (TAG_INSERTVIOLATIONS.equals(name)) {
- List violations = (List)
request.getAttribute(AbstractPreceptorAction.PRECEPTORVIOLATIONS);
+ Collection violations = (Collection)
request.getAttribute(AbstractPreceptorAction.PRECEPTORVIOLATIONS);
if (violations != null) {
for (Iterator it = violations.iterator(); it.hasNext();) {
Constraint constraint = (Constraint) it.next();
@@ -210,7 +211,7 @@
super.endElement(uri, "value", prefix + ":" + "value");
if (instance.getPreceptor() != null) {
- List constraints = instance.getPreceptor().getConstraitsFor(ref);
+ Collection constraints =
instance.getPreceptor().getConstraintsFor(ref);
if (constraints != null) {
for (Iterator it = constraints.iterator(); it.hasNext();) {
Constraint constraint = (Constraint) it.next();
1.3 +9 -2
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/Preceptor.java
Index: Preceptor.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/Preceptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Preceptor.java 25 Mar 2002 23:23:54 -0000 1.2
+++ Preceptor.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -53,7 +53,7 @@
import org.apache.avalon.framework.component.Component;
-import java.util.List;
+import java.util.Collection;
import java.net.URL;
/*
@@ -62,7 +62,14 @@
*/
public interface Preceptor extends Component {
public String ROLE = "org.apache.cocoon.precept.Preceptor";
- public List getConstraitsFor( String xpath ) throws InvalidXPathSyntaxException,
NoSuchNodeException;
+
+ public Collection getConstraintsFor( String xpath ) throws
InvalidXPathSyntaxException, NoSuchNodeException;
+
public boolean isValidNode( String xpath ) throws InvalidXPathSyntaxException;
+
public void buildInstance( Instance instance );
+
+ public Collection validate(Instance instance, String xpath, Context context)
throws InvalidXPathSyntaxException, NoSuchNodeException;
+ public Collection validate(Instance instance, Context context) throws
InvalidXPathSyntaxException;
+
}
1.3 +10 -7
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/acting/AbstractPreceptorAction.java
Index: AbstractPreceptorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/acting/AbstractPreceptorAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractPreceptorAction.java 25 Mar 2002 23:23:54 -0000 1.2
+++ AbstractPreceptorAction.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -110,19 +110,21 @@
}
}
- final protected List validate(Map objectModel, String instanceId) throws
InvalidXPathSyntaxException, NoSuchNodeException {
+ final protected Collection validate(Map objectModel, String instanceId) throws
InvalidXPathSyntaxException, NoSuchNodeException {
Instance instance = getInstance(objectModel,instanceId);
- List violations = instance.validate(null);
+ Preceptor preceptor = instance.getPreceptor();
+ Collection violations = preceptor.validate(instance,null);
return(violations);
}
- final protected List validate(Map objectModel, String instanceId, String xpath)
throws InvalidXPathSyntaxException, NoSuchNodeException {
+ final protected Collection validate(Map objectModel, String instanceId, String
xpath) throws InvalidXPathSyntaxException, NoSuchNodeException {
Instance instance = getInstance(objectModel,instanceId);
- List violations = instance.validate(xpath,null);
+ Preceptor preceptor = instance.getPreceptor();
+ Collection violations = preceptor.validate(instance,xpath,null);
return(violations);
}
- final protected void pass(Map objectModel, List violations) {
+ final protected void pass(Map objectModel, Collection violations) {
if (violations != null) {
Request request = ObjectModelHelper.getRequest(objectModel);
List currentViolations = (List) request.getAttribute(PRECEPTORVIOLATIONS);
@@ -134,11 +136,12 @@
}
}
- final protected List validate(Map objectModel, String instanceId, String[]
xpaths) throws InvalidXPathSyntaxException, NoSuchNodeException {
+ final protected Collection validate(Map objectModel, String instanceId, String[]
xpaths) throws InvalidXPathSyntaxException, NoSuchNodeException {
Instance instance = getInstance(objectModel,instanceId);
+ Preceptor preceptor = instance.getPreceptor();
ArrayList allErrors = null;
for(int i=0; i < xpaths.length; i++) {
- List errors = instance.validate(xpaths[i],null);
+ Collection errors = preceptor.validate(instance,xpaths[i],null);
if (errors != null) {
if (allErrors == null) allErrors = new ArrayList(1);
allErrors.addAll(errors);
1.3 +5 -8
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/acting/PreceptorDemoAction.java
Index: PreceptorDemoAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/acting/PreceptorDemoAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PreceptorDemoAction.java 25 Mar 2002 23:23:54 -0000 1.2
+++ PreceptorDemoAction.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -58,10 +58,7 @@
import org.apache.cocoon.environment.*;
import org.apache.avalon.framework.parameters.Parameters;
-import java.util.Map;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Iterator;
+import java.util.*;
import org.apache.cocoon.precept.Instance;
import org.apache.cocoon.precept.acting.AbstractPreceptorAction;
@@ -126,7 +123,7 @@
getLogger().debug("populating");
populate(objectModel, "form-feedback", SET_PERSON );
- List errors = validate(objectModel, "form-feedback", SET_PERSON );
+ Collection errors = validate(objectModel, "form-feedback", SET_PERSON );
if(errors != null) {
getLogger().debug("some constraints FAILED");
pass(objectModel,errors);
@@ -142,7 +139,7 @@
getLogger().debug("populating");
populate(objectModel, "form-feedback", SET_INSTALLATION );
- List errors = validate(objectModel, "form-feedback", SET_INSTALLATION );
+ Collection errors = validate(objectModel, "form-feedback", SET_INSTALLATION );
if(errors != null) {
getLogger().debug("some constraints FAILED");
pass(objectModel,errors);
@@ -158,7 +155,7 @@
getLogger().debug("populating");
populate(objectModel, "form-feedback", SET_SYSTEM );
- List errors = validate(objectModel, "form-feedback", SET_SYSTEM );
+ Collection errors = validate(objectModel, "form-feedback", SET_SYSTEM );
if(errors != null) {
getLogger().debug("some constraints FAILED");
pass(objectModel,errors);
@@ -172,7 +169,7 @@
public Map doSubmit(Redirector redirector, SourceResolver resolver, Map
objectModel, String src, Parameters par) throws Exception {
getLogger().debug("submitting");
- List errors = validate(objectModel, "form-feedback");
+ Collection errors = validate(objectModel, "form-feedback");
if (errors != null) {
getLogger().debug("some constraints FAILED");
pass(objectModel,errors);
1.3 +29 -9
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/preceptors/easyrelax/PreceptorImpl.java
Index: PreceptorImpl.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/preceptors/easyrelax/PreceptorImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PreceptorImpl.java 25 Mar 2002 23:23:54 -0000 1.2
+++ PreceptorImpl.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -51,16 +51,10 @@
package org.apache.cocoon.precept.preceptors.easyrelax;
-import org.apache.cocoon.precept.Instance;
-import org.apache.cocoon.precept.InvalidXPathSyntaxException;
-import org.apache.cocoon.precept.NoSuchNodeException;
-import org.apache.cocoon.precept.PreceptorViolationException;
+import org.apache.cocoon.precept.*;
import org.apache.cocoon.precept.preceptors.AbstractPreceptor;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
+import java.util.*;
/*
* @version: Mar 14, 2002
@@ -69,7 +63,33 @@
public class PreceptorImpl extends AbstractPreceptor {
HashMap index = new HashMap();
- public List getConstraitsFor(String xpath) throws NoSuchNodeException {
+ public Collection validate(Instance instance, String xpath, Context context)
throws InvalidXPathSyntaxException, NoSuchNodeException {
+ Collection violations = null;
+ Collection constraints = (Collection) getConstraintsFor(xpath);
+ if (constraints != null) {
+ Object value = instance.getValue(xpath);
+ for (Iterator it = constraints.iterator(); it.hasNext();) {
+ Constraint constraint = (Constraint) it.next();
+ if (!constraint.isSatisfiedBy(value,context)) {
+ if (violations == null) {
+ violations = new HashSet();
+ }
+ violations.add(constraint);
+ }
+ }
+ return(violations);
+ }
+ else {
+ return(null);
+ }
+ }
+
+ public Collection validate(Instance instance, Context context) throws
InvalidXPathSyntaxException {
+ /* we need obtaint a list of all nodes in the instance here */
+ return(null);
+ }
+
+ public Collection getConstraintsFor(String xpath) throws NoSuchNodeException {
AbstractPreceptorNode node = (AbstractPreceptorNode) index.get(xpath);
if (node != null) {
List constraints = node.getConstraints();
1.3 +2 -2
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/AttributeNode.java
Index: AttributeNode.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/AttributeNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AttributeNode.java 25 Mar 2002 23:23:55 -0000 1.2
+++ AttributeNode.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -51,14 +51,14 @@
package org.apache.cocoon.precept.stores.dom.simple;
import java.util.Iterator;
-import java.util.List;
+import java.util.Collection;
/*
* @author: Torsten Curdt <[EMAIL PROTECTED]>
*/
public class AttributeNode extends Node {
- public AttributeNode( String name, List constraints) {
+ public AttributeNode( String name, Collection constraints) {
super(name,constraints);
}
1.3 +2 -2
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/ElementNode.java
Index: ElementNode.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/ElementNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ElementNode.java 25 Mar 2002 23:23:55 -0000 1.2
+++ ElementNode.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -70,7 +70,7 @@
private HashMap attributeIndex;
- public ElementNode(String name, List constraints) {
+ public ElementNode(String name, Collection constraints) {
super(name, constraints);
}
@@ -139,7 +139,7 @@
if (e.getValue() != null)
handler.characters(e.getValue().toString().toCharArray(), 0, e.getValue().length());
if (withConstraints) {
- List constraints = e.getConstraints();
+ Collection constraints = e.getConstraints();
if (constraints != null) {
for (Iterator it = constraints.iterator(); it.hasNext();) {
Constraint constraint = (Constraint) it.next();
1.3 +5 -4
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/InstanceImpl.java
Index: InstanceImpl.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/InstanceImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- InstanceImpl.java 25 Mar 2002 23:23:55 -0000 1.2
+++ InstanceImpl.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -109,7 +109,7 @@
throw new InvalidXPathSyntaxException(level);
}
if (preceptor != null) {
- node = new AttributeNode(level.substring(1),
preceptor.getConstraitsFor(currentPath.toString()));
+ node = new AttributeNode(level.substring(1),
preceptor.getConstraintsFor(currentPath.toString()));
}
else {
node = new AttributeNode(level.substring(1), null);
@@ -121,7 +121,7 @@
}
else {
if (preceptor != null) {
- node = new ElementNode(level,
preceptor.getConstraitsFor(currentPath.toString()));
+ node = new ElementNode(level,
preceptor.getConstraintsFor(currentPath.toString()));
}
else {
node = new ElementNode(level, null);
@@ -135,7 +135,7 @@
else {
getLogger().debug("creating root node [" + String.valueOf(currentPath)
+ "]");
if (preceptor != null) {
- node = root = new ElementNode(level,
preceptor.getConstraitsFor(currentPath.toString()));
+ node = root = new ElementNode(level,
preceptor.getConstraintsFor(currentPath.toString()));
}
else {
node = root = new ElementNode(level, null);
@@ -192,6 +192,7 @@
}
}
+/*
public List validate(Context context) throws InvalidXPathSyntaxException {
ArrayList all = null;
for (Iterator it = index.keySet().iterator(); it.hasNext();) {
@@ -241,7 +242,7 @@
throw new NoSuchNodeException(xpath);
}
}
-
+*/
public Preceptor getPreceptor() {
return (preceptor);
}
1.3 +4 -4
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/Node.java
Index: Node.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/precept/stores/dom/simple/Node.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Node.java 25 Mar 2002 23:23:55 -0000 1.2
+++ Node.java 4 Apr 2002 07:02:09 -0000 1.3
@@ -53,9 +53,9 @@
import org.apache.cocoon.precept.Context;
-import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Collection;
/*
* @version: Mar 14, 2002
@@ -65,9 +65,9 @@
protected String name;
protected String value;
- protected List constraints;
+ protected Collection constraints;
- public Node( String name, List constraints) {
+ public Node( String name, Collection constraints) {
this.name = name;
this.constraints = constraints;
}
@@ -84,7 +84,7 @@
this.value = value;
}
- public List getConstraints() {
+ public Collection getConstraints() {
return(constraints);
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]