You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by pi...@apache.org on 2005/09/08 02:18:32 UTC
svn commit: r279470 - in
/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl:
CachingSchemaParser.java DefaultValidator.java XercesContext.java
XercesGrammarParser.java XercesSchema.java
Author: pier
Date: Wed Sep 7 17:18:26 2005
New Revision: 279470
URL: http://svn.apache.org/viewcvs?rev=279470&view=rev
Log:
More debugging code (something does not work)
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/CachingSchemaParser.java
cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/DefaultValidator.java
cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesContext.java
cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesGrammarParser.java
cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesSchema.java
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/CachingSchemaParser.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/CachingSchemaParser.java?rev=279470&r1=279469&r2=279470&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/CachingSchemaParser.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/CachingSchemaParser.java Wed Sep 7 17:18:26 2005
@@ -23,6 +23,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
@@ -55,6 +56,8 @@
protected Store transientStore = null;
/** <p>A flag indicating whether schemas can be cached or not.</p> */
private boolean enableCache = true;
+ /** <p>The current logger.</p> */
+ private Logger logger = null;
/**
* <p>Contextualize this component specifying a {@link ServiceManager} instance.</p>
@@ -74,8 +77,11 @@
*/
public void configure(Configuration configuration)
throws ConfigurationException {
+ this.logger = super.getLogger();
Configuration subconfiguration = configuration.getChild("cache-schemas");
this.enableCache = subconfiguration.getValueAsBoolean(true);
+ this.logger.debug("Schema caching is " + (this.enableCache? "en": "dis")
+ + "abled for " + configuration.getAttribute("name"));
}
/**
@@ -87,7 +93,9 @@
throws Exception {
this.entityResolver = (EntityResolver) this.serviceManager.lookup(EntityResolver.ROLE);
this.sourceResolver = (SourceResolver) this.serviceManager.lookup(SourceResolver.ROLE);
- this.transientStore = (Store) this.serviceManager.lookup(Store.TRANSIENT_STORE);
+ if (this.enableCache) {
+ this.transientStore = (Store) this.serviceManager.lookup(Store.TRANSIENT_STORE);
+ }
}
/**
@@ -115,35 +123,45 @@
}
/* Prepare a key, and try to get the cached copy of the schema */
- String key = this.getClass().getName() + ":" + uri;
- Schema schema = (Schema) this.transientStore.get(key);
- SourceValidity validity = null;
-
- /* If the schema was found verify its validity and optionally clear */
- if (schema != null) {
- super.getLogger().debug("Accessing cached schema " + uri);
- validity = schema.getValidity();
- if (validity == null) {
- super.getLogger().debug("Cached schema " + uri + " has no validity");
- this.transientStore.remove(key);
- schema = null;
- } else if (validity.isValid() != SourceValidity.VALID) {
- super.getLogger().debug("Cached schema " + uri + " is not valid");
- this.transientStore.remove(key);
- schema = null;
+ Schema schema = null;
+
+ if (this.transientStore != null) {
+ String key = this.getClass().getName() + ":" + uri;
+ SourceValidity validity = null;
+ schema = (Schema) this.transientStore.get(key);
+
+ /* If the schema was found verify its validity and optionally clear */
+ if (schema != null) {
+ this.logger.debug("Accessing cached schema " + uri);
+ validity = schema.getValidity();
+ if (validity == null) {
+ this.logger.debug("Cached schema " + uri + " has no validity");
+ this.transientStore.remove(key);
+ schema = null;
+ } else if (validity.isValid() != SourceValidity.VALID) {
+ this.logger.debug("Cached schema " + uri + " is not valid");
+ this.transientStore.remove(key);
+ schema = null;
+ }
}
- }
- /* If the schema was not cached or was cleared, parse and cache it */
- if (schema == null) {
- super.getLogger().debug("Parsing schema " + uri);
- schema = this.parseSchema(uri);
- validity = schema.getValidity();
- if ((validity != null) && (validity.isValid() == SourceValidity.VALID)) {
- this.transientStore.store(key, schema);
+ /* If the schema was not cached or was cleared, parse and cache it */
+ if (schema == null) {
+ this.logger.debug("Parsing schema " + uri);
+ schema = this.parseSchema(uri);
+ validity = schema.getValidity();
+ if (validity != null) {
+ if (validity.isValid() == SourceValidity.VALID) {
+ this.transientStore.store(key, schema);
+ }
+ }
}
+ } else {
+ /* Caching is disabled */
+ schema = this.parseSchema(uri);
}
-
+
+
/* Return the parsed or cached schema */
return schema;
}
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/DefaultValidator.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/DefaultValidator.java?rev=279470&r1=279469&r2=279470&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/DefaultValidator.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/DefaultValidator.java Wed Sep 7 17:18:26 2005
@@ -142,7 +142,6 @@
Configuration configurations[] = this.conf.getChildren(this.shorthand);
this.logger.debug("Configuring " + configurations.length + " schema parsers"
+ " from " + this.conf.getLocation());
-
for (int x = 0; x < configurations.length; x++) try {
Configuration configuration = configurations[x];
String className = configuration.getAttribute("class");
@@ -179,15 +178,17 @@
SchemaParser parser = (SchemaParser) component;
String grammars[] = parser.getSupportedGrammars();
if (grammars != null) {
- for (int k = 0; x < grammars.length; x++) {
- if (this.selections.containsKey(grammars[x])) continue;
- this.selections.put(grammars[x], component);
- this.logger.debug("SchemaParser " + selectionKey
- + "provides grammar " + grammars[x]);
+ for (int k = 0; k < grammars.length; k++) {
+ if (this.selections.containsKey(grammars[k])) continue;
+ this.selections.put(grammars[k], component);
+ this.logger.debug("SchemaParser " + selectionKey +
+ "provides grammar " + grammars[k]);
}
}
}
} catch (Exception exception) {
+ this.logger.warn("Exception creating schema parsers", exception);
+
Iterator iterator = this.components.iterator();
while (iterator.hasNext()) try {
this.decommissionComponent(iterator.next());
@@ -204,6 +205,7 @@
throw new ConfigurationException(message, configuration, exception);
}
}
+ this.logger.debug("Configured successfully");
}
/**
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesContext.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesContext.java?rev=279470&r1=279469&r2=279470&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesContext.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesContext.java Wed Sep 7 17:18:26 2005
@@ -29,6 +29,7 @@
import org.apache.xerces.xni.XNIException;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
import org.apache.xerces.xni.parser.XMLComponent;
+import org.apache.xerces.xni.parser.XMLComponentManager;
import org.apache.xerces.xni.parser.XMLEntityResolver;
import org.apache.xerces.xni.parser.XMLErrorHandler;
import org.apache.xerces.xni.parser.XMLParseException;
@@ -129,14 +130,35 @@
super.setFeature(F_VALIDATION, true);
super.setFeature(F_SCHEMA_VALIDATION, true);
- /* Initialize the configured Error Reporter */
+ /* Initialize all known components */
Iterator iterator = super.fProperties.values().iterator();
- while (iterator.hasNext()) {
- Object object = iterator.next();
- if (object instanceof XMLComponent) {
- ((XMLComponent) object).reset(this);
- }
+ while (iterator.hasNext()) this.initialize(iterator.next());
+ }
+
+ public Object initialize(Object object) {
+ if (!(object instanceof XMLComponent)) return object;
+ XMLComponent component = (XMLComponent) object;
+ component.reset(this);
+
+ /* Force setting all known features */
+ Iterator features = super.fFeatures.keySet().iterator();
+ while (features.hasNext()) try {
+ String featureName = (String) features.next();
+ component.setFeature(featureName, this.getFeature(featureName));
+ } catch (XNIException exception) {
+ // Swallow any exception;
}
+
+ /* Force setting all known properties */
+ Iterator properties = super.fProperties.keySet().iterator();
+ while (properties.hasNext()) try {
+ String propertyName = (String) properties.next();
+ component.setProperty(propertyName, this.getProperty(propertyName));
+ } catch (XNIException exception) {
+ // Swallow any exception;
+ }
+
+ return object;
}
/**
@@ -153,33 +175,39 @@
public void warning(String domain, String key, XMLParseException e)
throws XNIException {
+ System.err.println("DETECTED " + e.getMessage() + "/" + this.errorHandler);
if (this.errorHandler != null) try {
this.errorHandler.warning(this.makeException(e));
} catch (SAXException saxException) {
throw new XNIException(saxException);
} else {
+ System.err.println("THROWING " + e.getMessage());
throw e;
}
}
public void error(String domain, String key, XMLParseException e)
throws XNIException {
+ System.err.println("DETECTED " + e.getMessage() + "/" + this.errorHandler);
if (this.errorHandler != null) try {
this.errorHandler.warning(this.makeException(e));
} catch (SAXException saxException) {
throw new XNIException(saxException);
} else {
+ System.err.println("THROWING " + e.getMessage());
throw e;
}
}
public void fatalError(String domain, String key, XMLParseException e)
throws XNIException {
+ System.err.println("DETECTED " + e.getMessage() + "/" + this.errorHandler);
if (this.errorHandler != null) try {
this.errorHandler.warning(this.makeException(e));
} catch (SAXException saxException) {
throw new XNIException(saxException);
} else {
+ System.err.println("THROWING " + e.getMessage());
throw e;
}
}
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesGrammarParser.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesGrammarParser.java?rev=279470&r1=279469&r2=279470&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesGrammarParser.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesGrammarParser.java Wed Sep 7 17:18:26 2005
@@ -23,7 +23,6 @@
import org.apache.xerces.util.XMLGrammarPoolImpl;
import org.apache.xerces.xni.grammars.XMLGrammarLoader;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
-import org.apache.xerces.xni.parser.XMLComponent;
import org.xml.sax.SAXException;
/**
@@ -62,10 +61,12 @@
/* Create a new XML Schema Loader and set the pool into it */
XMLGrammarLoader loader = this.newGrammarLoader();
- ((XMLComponent) loader).reset(context);
+ context.initialize(loader);
/* Load (parse and interpret) the grammar */
+ this.getLogger().debug("Loading grammar from " + uri);
loader.loadGrammar(res.resolveUri(uri));
+ this.getLogger().debug("Grammar successfully loaded from " + uri);
/* Return a new Schema instance */
SourceValidity validity = res.getSourceValidity();
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesSchema.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesSchema.java?rev=279470&r1=279469&r2=279470&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesSchema.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/validation/java/org/apache/cocoon/components/validation/impl/XercesSchema.java Wed Sep 7 17:18:26 2005
@@ -18,7 +18,6 @@
import org.apache.excalibur.source.SourceValidity;
import org.apache.xerces.xni.XMLDocumentHandler;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
-import org.apache.xerces.xni.parser.XMLComponent;
import org.xml.sax.ContentHandler;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
@@ -58,8 +57,7 @@
new XercesEntityResolver(),
errorHandler);
try {
- Object instance = this.validatorClass.newInstance();
- ((XMLComponent) instance).reset(context);
+ Object instance = context.initialize(this.validatorClass.newInstance());
return new XercesContentHandler((XMLDocumentHandler) instance);
} catch (Exception exception) {
throw new SAXException("Unable to access validator", exception);