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 2003/11/19 15:39:13 UTC
cvs commit: cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl AbstractConfigurableSourceDescriptor.java AbstractConfigurableSourceInspector.java
unico 2003/11/19 06:39:13
Modified: src/blocks/repository/java/org/apache/cocoon/components/source/impl
AbstractConfigurableSourceDescriptor.java
AbstractConfigurableSourceInspector.java
Log:
documentation improvments
Revision Changes Path
1.4 +34 -8 cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/AbstractConfigurableSourceDescriptor.java
Index: AbstractConfigurableSourceDescriptor.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/AbstractConfigurableSourceDescriptor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractConfigurableSourceDescriptor.java 28 Oct 2003 15:01:00 -0000 1.3
+++ AbstractConfigurableSourceDescriptor.java 19 Nov 2003 14:39:12 -0000 1.4
@@ -55,14 +55,27 @@
import org.apache.excalibur.source.SourceException;
/**
- * Abstract base class for configurable SourceInspectors.
+ * Abstract base class SourceDescriptors that want to
+ * configure the set of properties they handle beforehand.
+ *
+ * <p>
+ * Knowing which properties an inspector handles beforehand
+ * greatly improves property management performance.
+ * </p>
*
* @author <a href="mailto:unico@apache.org">Unico Hommes</a>
*/
public abstract class AbstractConfigurableSourceDescriptor
extends AbstractConfigurableSourceInspector implements SourceDescriptor {
-
+
+ // ---------------------------------------------------- SourceDescriptor methods
+
+ /**
+ * Checks if this SourceDescriptor is configured to handle the
+ * given property and if so forwards the call to
+ * <code>doRemoveSourceProperty()</code>.
+ */
public final void removeSourceProperty(Source source, String namespace, String name)
throws SourceException {
@@ -74,7 +87,12 @@
doRemoveSourceProperty(source,namespace,name);
}
}
-
+
+ /**
+ * Checks if this SourceDescriptor is configured to handle the
+ * given property and if so forwards the call to
+ * <code>doSetSourceProperty()</code>.
+ */
public final void setSourceProperty(Source source, SourceProperty property)
throws SourceException {
@@ -86,11 +104,19 @@
doSetSourceProperty(source,property);
}
}
-
- protected abstract void doRemoveSourceProperty(Source source, String namespace,String name)
+
+ // ---------------------------------------------------- abstract methods
+
+ /**
+ * Do the actual work of removing the given property from the provided Source.
+ */
+ protected abstract void doRemoveSourceProperty(Source source, String namespace,String name)
throws SourceException;
-
- protected abstract void doSetSourceProperty(Source source, SourceProperty property)
+
+ /**
+ * Do the actual work of setting the provided SourceProperty on the given Source.
+ */
+ protected abstract void doSetSourceProperty(Source source, SourceProperty property)
throws SourceException;
-
+
}
1.4 +57 -12 cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/AbstractConfigurableSourceInspector.java
Index: AbstractConfigurableSourceInspector.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/AbstractConfigurableSourceInspector.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractConfigurableSourceInspector.java 28 Oct 2003 15:01:00 -0000 1.3
+++ AbstractConfigurableSourceInspector.java 19 Nov 2003 14:39:12 -0000 1.4
@@ -63,21 +63,34 @@
import org.apache.excalibur.source.SourceException;
/**
- * Abstract base class for configurable SourceInspectors.
+ * Abstract base class for SourceInspectors that want to
+ * configure the set of properties they handle beforehand.
+ *
+ * <p>
+ * Knowing which properties an inspector handles beforehand
+ * greatly improves property management performance.
+ * </p>
*
* @author <a href="mailto:unico@apache.org">Unico Hommes</a>
*/
public abstract class AbstractConfigurableSourceInspector extends AbstractLogEnabled
- implements SourceInspector, Configurable {
+implements SourceInspector, Configurable {
// the set of properties this inspector is configured to handle
private Set m_properties;
-
+
+
+ // ---------------------------------------------------- lifecycle
+
public AbstractConfigurableSourceInspector() {
}
-
+
/**
* Configure this source inspector to handle properties of required types.
+ * <p>
+ * Configuration is in the form of a set of property elements as follows:<br>
+ * <code><property name="owner" namespace="meta"></code>
+ * </p>
*/
public void configure(Configuration configuration) throws ConfigurationException {
final Configuration[] properties = configuration.getChildren("property");
@@ -90,10 +103,22 @@
+ properties[i].getLocation();
throw new ConfigurationException(message);
}
- m_properties.add(namespace + "#" + name);
+ String property = namespace + "#" + name;
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Handling '" + property + "'");
+ }
+ m_properties.add(property);
}
}
-
+
+ // ---------------------------------------------------- SourceInspector methods
+
+ /**
+ * Iterates over the configured set of properties to handle,
+ * for each property calls <code>doGetSourceProperty()</code>,
+ * and returns the list of properties thus obtained. Subclasses
+ * may want to overide this behavior to improve performance.
+ */
public SourceProperty[] getSourceProperties(Source source) throws SourceException {
final Set result = new HashSet();
final Iterator properties = m_properties.iterator();
@@ -102,14 +127,18 @@
int index = property.indexOf('#');
String namespace = property.substring(0,index);
String name = property.substring(index+1);
- SourceProperty sp = getSourceProperty(source,namespace,name);
+ SourceProperty sp = doGetSourceProperty(source,namespace,name);
if (sp != null) {
result.add(sp);
}
}
return (SourceProperty[]) result.toArray(new SourceProperty[result.size()]);
}
-
+
+ /**
+ * Checks if this inspector is configured to handle the requested property
+ * and if so forwards the call to <code>doGetSourceProperty</code>.
+ */
public final SourceProperty getSourceProperty(Source source, String namespace, String name)
throws SourceException {
@@ -122,15 +151,31 @@
}
return null;
}
-
+
+ // ---------------------------------------------------- abstract methods
+
+ /**
+ * Do the actual work of getting the requested SourceProperty for the given Source.
+ */
+ protected abstract SourceProperty doGetSourceProperty(Source source, String ns, String name)
+ throws SourceException;
+
+
+ // ---------------------------------------------------- utility methods
+
+ /**
+ * Check if this inspector is configured to handle properties of
+ * the given type.
+ */
protected final boolean handlesProperty(String namespace, String name) {
return m_properties.contains(namespace + "#" + name);
}
- protected abstract SourceProperty doGetSourceProperty(Source source, String ns, String name)
- throws SourceException;
-
+ /**
+ * Provide subclasses access to the set of configured properties.
+ */
protected final Set getPropertyTypes() {
return m_properties;
}
+
}