You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by un...@apache.org on 2004/11/24 18:35:58 UTC
svn commit: r106439 - /cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Author: unico
Date: Wed Nov 24 09:35:57 2004
New Revision: 106439
URL: http://svn.apache.org/viewcvs?view=rev&rev=106439
Log:
jxtg validity should be combination of evaluated validity and the template source's validity
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java?view=diff&rev=106439&p1=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java&r1=106438&p2=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java&r2=106439
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java Wed Nov 24 09:35:57 2004
@@ -3212,11 +3212,15 @@
public SourceValidity getValidity() {
JXTExpression validityExpr = (JXTExpression)getCurrentTemplateProperty(VALIDITY);
try {
- return (SourceValidity)getValue(validityExpr, globalJexlContext, jxpathContext);
+ final SourceValidity sourceValidity = this.inputSource.getValidity();
+ final SourceValidity templateValidity = (SourceValidity) getValue(validityExpr, globalJexlContext, jxpathContext);
+ if (sourceValidity != null && templateValidity != null) {
+ return new JXSourceValidity(sourceValidity, templateValidity);
+ }
} catch (Exception e) {
- getLogger().error( "error evaluating cache key", e );
- return null;
+ getLogger().error( "error evaluating cache validity", e );
}
+ return null;
}
private Object getCurrentTemplateProperty(String propertyName) {
@@ -3261,5 +3265,50 @@
}
return false;
}
+ }
+
+ static final class JXSourceValidity implements SourceValidity, Serializable {
+ private final SourceValidity sourceValidity;
+ private final SourceValidity templateValidity;
+ private JXSourceValidity(SourceValidity sourceValidity, SourceValidity templateValidity) {
+ this.sourceValidity = sourceValidity;
+ this.templateValidity = templateValidity;
+ }
+
+ public int isValid() {
+ switch (sourceValidity.isValid()) {
+ case SourceValidity.INVALID: return SourceValidity.INVALID;
+ case SourceValidity.UNKNOWN: {
+ if (templateValidity.isValid() == SourceValidity.INVALID) {
+ return SourceValidity.INVALID;
+ }
+ else {
+ return SourceValidity.UNKNOWN;
+ }
+ }
+ case SourceValidity.VALID: return templateValidity.isValid();
+ }
+ return SourceValidity.UNKNOWN;
+ }
+
+ public int isValid(SourceValidity otherValidity) {
+ if (otherValidity instanceof JXSourceValidity) {
+ JXSourceValidity otherJXValidity = (JXSourceValidity) otherValidity;
+ switch (sourceValidity.isValid(otherJXValidity.sourceValidity)) {
+ case SourceValidity.INVALID: return SourceValidity.INVALID;
+ case SourceValidity.UNKNOWN: {
+ if (templateValidity.isValid(otherJXValidity.templateValidity) == SourceValidity.INVALID) {
+ return SourceValidity.INVALID;
+ }
+ else {
+ return SourceValidity.UNKNOWN;
+ }
+ }
+ case SourceValidity.VALID: return templateValidity.isValid(otherJXValidity.templateValidity);
+ }
+ }
+ return 0;
+ }
+
}
}