vgritsenko 02/04/05 22:26:10
Modified: src/java/org/apache/cocoon/acting
AbstractComplementaryConfigurableAction.java
Log:
1. Use resource resolver to resolve resources
2. Check time stamp on !=
3. Cache descriptors using system ID
Revision Changes Path
1.7 +30 -52
xml-cocoon2/src/java/org/apache/cocoon/acting/AbstractComplementaryConfigurableAction.java
Index: AbstractComplementaryConfigurableAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/acting/AbstractComplementaryConfigurableAction.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AbstractComplementaryConfigurableAction.java 22 Feb 2002 06:59:26 -0000
1.6
+++ AbstractComplementaryConfigurableAction.java 6 Apr 2002 06:26:10 -0000
1.7
@@ -50,15 +50,12 @@
*/
package org.apache.cocoon.acting;
-import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
import org.apache.cocoon.Constants;
-import org.apache.cocoon.components.source.SourceHandler;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.environment.Environment;
import java.util.HashMap;
import java.util.Map;
@@ -71,7 +68,7 @@
* effective. The name of the root configuration element is irrelevant.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Id: AbstractComplementaryConfigurableAction.java,v 1.6 2002/02/22
06:59:26 cziegeler Exp $
+ * @version CVS $Id: AbstractComplementaryConfigurableAction.java,v 1.7 2002/04/06
06:26:10 vgritsenko Exp $
*/
public abstract class AbstractComplementaryConfigurableAction extends
ConfigurableComposerAction {
private static Map configurations = new HashMap();
@@ -85,10 +82,10 @@
* Defaults to reload configuration file it has changed.
*/
protected Configuration getConfiguration(String descriptor) throws
ConfigurationException {
- boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
- if (this.settings.containsKey("reloadable"))
- reloadable = Boolean.getBoolean((String) this.settings.get("reloadable"));
- return this.getConfiguration(descriptor, null, reloadable);
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+ if (this.settings.containsKey("reloadable"))
+ reloadable = Boolean.getBoolean((String)
this.settings.get("reloadable"));
+ return this.getConfiguration(descriptor, null, reloadable);
}
/**
@@ -113,55 +110,36 @@
}
synchronized (AbstractComplementaryConfigurableAction.configurations) {
- conf = (ConfigurationHelper)
AbstractComplementaryConfigurableAction.configurations.get(descriptor);
+ Source resource = null;
+ try {
+ resource = resolver.resolve(descriptor);
+ conf = (ConfigurationHelper)
AbstractComplementaryConfigurableAction.configurations.get(resource.getSystemId());
+ if (conf == null || (reloadable && conf.lastModified !=
resource.getLastModified())) {
+ getLogger().debug("(Re)Loading " + descriptor);
- if (reloadable || conf == null) {
- SourceHandler sourceHandler = null;
- Source resource = null;
-
- try {
- sourceHandler = (SourceHandler)
this.manager.lookup(SourceHandler.ROLE);
- if (descriptor.startsWith("file:")) {
- resource =
sourceHandler.getSource((Environment)resolver,((Environment)resolver).getContext(),
descriptor.substring(5));
- } else
- resource = sourceHandler.getSource(null, descriptor);
-
- if (conf == null || conf.lastModified <
resource.getLastModified()) {
- getLogger().debug("(Re)Loading " + descriptor);
- if (conf == null)
- conf = new ConfigurationHelper();
-
- SAXConfigurationHandler builder = new
SAXConfigurationHandler();
- resource.toSAX(builder);
-
- conf.lastModified = resource.getLastModified();
- conf.configuration = builder.getConfiguration();
-
- this.cacheConfiguration(descriptor, conf);
- } else {
- getLogger().debug("Using cached configuration for " +
descriptor);
+ if (conf == null) {
+ conf = new ConfigurationHelper();
}
- } catch (Exception e) {
- getLogger().error("Could not configure Database mapping
environment", e);
- throw new ConfigurationException("Error trying to load
configurations for resource: " + (resource == null ? "null" : resource.getSystemId()));
- } finally {
- if (resource != null) resource.recycle();
- this.manager.release(sourceHandler);
+
+ SAXConfigurationHandler builder = new SAXConfigurationHandler();
+ resource.toSAX(builder);
+
+ conf.lastModified = resource.getLastModified();
+ conf.configuration = builder.getConfiguration();
+
+
AbstractComplementaryConfigurableAction.configurations.put(resource.getSystemId(),
conf);
+ } else {
+ getLogger().debug("Using cached configuration for " +
descriptor);
}
- } else {
- getLogger().debug("Using fixed cached configuration for " + descriptor);
- }
+ } catch (Exception e) {
+ getLogger().error("Could not configure Database mapping
environment", e);
+ throw new ConfigurationException("Error trying to load
configurations for resource: "
+ + (resource == null ? "null" : resource.getSystemId()));
+ } finally {
+ if (resource != null) resource.recycle();
+ }
}
return conf.configuration;
- }
-
- /**
- * Cache the configuration so that we can use it later.
- */
- private void cacheConfiguration(String descriptor, ConfigurationHelper conf) {
- synchronized (AbstractComplementaryConfigurableAction.configurations) {
- AbstractComplementaryConfigurableAction.configurations.put(descriptor,
conf);
- }
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]