pier 2004/05/04 10:41:05
Modified: src/kernel/org/apache/cocoon/kernel/composition
Component.java Wire.java
Added: src/kernel/org/apache/cocoon/kernel/composition
ComponentComposer.java
Log:
Simplifying the Wire and Component interfaces.
Revision Changes Path
1.4 +14 -8
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Component.java
Index: Component.java
===================================================================
RCS file:
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Component.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Component.java 31 Mar 2004 13:01:38 -0000 1.3
+++ Component.java 4 May 2004 17:41:05 -0000 1.4
@@ -17,14 +17,16 @@
import java.net.URL;
+import org.apache.cocoon.kernel.resolution.Resolver;
+
/**
* <p>The [EMAIL PROTECTED] Component} interface identifies a component
aware of its
* deployment in a block-enabled environment.</p>
*
* <p>Any component implementing this interface <b>must be aware</b> that
- * the [EMAIL PROTECTED] Wire} they will be given will resolve [EMAIL
PROTECTED] URL}s in the context
- * of the <b>calling</b> block and not in the context of the block they are
- * defined in.</p>
+ * the [EMAIL PROTECTED] Resolver} they will be given will resolve [EMAIL
PROTECTED] URL}s in the
+ * context of the <b>calling</b> block and not in the context of the block
they
+ * are defined in.</p>
*
* <p>This is done because resource management is decoupled entirely from
* component management, and because in block-enabled environments, it will
@@ -61,10 +63,14 @@
public interface Component {
/**
- * <p>Contextualize this [EMAIL PROTECTED] Component} component instance
with the
- * [EMAIL PROTECTED] Wire} through which its caller is accessing it.</p>
+ * <p>Contextualize this [EMAIL PROTECTED] Component} instance.</p>
*
- * @param wire the [EMAIL PROTECTED] Wire} instance associated with this
instance.
+ * @param wire the [EMAIL PROTECTED] Wire} instance through which the
block requesting
+ * this instance is accessing it.
+ * @param wirings the [EMAIL PROTECTED] Wirings} instance associated
with the block
+ * instance in which this [EMAIL PROTECTED] Component} is
defined.
+ * @param resolver the [EMAIL PROTECTED] Resolver} instance resolving
resources in the
+ * calling block instance.
*/
- public void contextualize(Wire wire);
+ public void contextualize(Wire wire, Wirings wirings, Resolver resolver);
}
1.4 +2 -50
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Wire.java
Index: Wire.java
===================================================================
RCS file:
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Wire.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Wire.java 31 Mar 2004 13:01:38 -0000 1.3
+++ Wire.java 4 May 2004 17:41:05 -0000 1.4
@@ -15,9 +15,6 @@
*/
package org.apache.cocoon.kernel.composition;
-import org.apache.cocoon.kernel.resolution.Resolver;
-import org.apache.cocoon.kernel.resolution.Resource;
-
/**
* <p>The [EMAIL PROTECTED] Wire} interface defines a component as returned
by a
* [EMAIL PROTECTED] Wirings} instance.</p>
@@ -61,52 +58,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
* @version 1.0 (CVS $Revision$)
*/
-public interface Wire extends Resolver {
-
- /**
- * <p>Resolve a resource visible from a [EMAIL PROTECTED] Component}
into a
- * [EMAIL PROTECTED] Resource}.</p>
- *
- * <p>This method will resolve resources local to the block requesting
- * this wire.</p>
- *
- * <p>If the specified [EMAIL PROTECTED] String} assumes a format like
- * <code>wiring:/resource/path</code> where <code>wiring</code> is the
- * wiring name as required in the block's deployment descriptor, the
- * resolution of the [EMAIL PROTECTED] Resource} will be performed
relative to the
- * block target of the wiring.</p>
- *
- * <p>[EMAIL PROTECTED] Component}s using a [EMAIL PROTECTED] Wire} for
resource resolution
- * <b>must</b> be aware that resolution will happen in the context of the
- * requesting block, rather than in the context of the block composing
the
- * [EMAIL PROTECTED] Component}.</p>
- *
- * <p>This is done because resource management is decoupled entirely from
- * component management, and because in block-enabled environments, it
will
- * be possible to have components provided by wired blocks to operate on
- * resources available from other wired blocks.</p>
- *
- * <p>Let's examine a simple example based (for example) on Apache
Cocoon:
- * the <i>ForrestPipeline</i> block (a block providing a
<code>Pipeline</code>
- * component for Apache Forrest) is wired to two other blocks: the first
is
- * the <i>XSLTransformer</i> block (providing <code>Transformer</code>
- * component instances) and the second one is an instance of the
- * <i>ForrestSkin</i> block (a block providing XSLT stylesheets to be
used
- * while processing the forrest pipeline).</p>
- *
- * <p>Being an implementation of [EMAIL PROTECTED] Component}, the
<code>Transformer</code>
- * component instantiated by the <i>ForrestPipeline</i> block will have
direct
- * access (and will be able to resolve) a resource in the form of
- * <code>skin:/document2xhtml.xsl</code>, which represents a resource
provided
- * by any <i>ForrestSkin</i> implementation, wired to the
<i>ForrestPipeline</i>
- * block, but completely separated from the
original<i>XSLTransformer</i> block
- * which provides the <code>Transformer</code> instance.</p>
- *
- * @param name the local (or wired) resource name.
- * @return a [EMAIL PROTECTED] Resource} instance, or <b>null</b> if the
resource was
- * not found or was not accessible.
- */
- public Resource resolve(String name);
+public interface Wire {
/**
* <p>Check wether the wire between this [EMAIL PROTECTED] Wirings}
instance and the
1.1
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/ComponentComposer.java
Index: ComponentComposer.java
===================================================================
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.kernel.composition;
import org.apache.cocoon.kernel.configuration.ConfigurationException;
import org.apache.cocoon.kernel.configuration.Parameters;
/**
* <p>The [EMAIL PROTECTED] ComponentComposer} class represents a simple
[EMAIL PROTECTED] Composer}
* returning its own instance in the [EMAIL PROTECTED] #acquire()}
method.</p>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
* @version 1.0 (CVS $Revision: 1.1 $)
*/
public abstract class ComponentComposer implements Composer {
/** <p>The contextualized [EMAIL PROTECTED] Wirings} instance.</p> */
protected Wirings wirings = null;
/** <p>The configured [EMAIL PROTECTED] Parameters} instance.</p> */
protected Parameters parameters = null;
/**
* <p>Create a new [EMAIL PROTECTED] ComponentComposer} instance.</p>
*/
protected ComponentComposer() {
super();
}
/**
* <p>Acquire this [EMAIL PROTECTED] ComponentComposer} instance.</p>
*
* @return this [EMAIL PROTECTED] ComponentComposer} instance.
*/
public Object acquire()
throws Throwable {
return(this);
}
/**
* <p>Release a previously acquired [EMAIL PROTECTED] ComponentComposer}
instance.</p>
*
* <p>This method does not do anything.</p>
*
* @return this [EMAIL PROTECTED] ComponentComposer} instance.
*/
public void release(Object object) {
/* Nothing to do here */
}
/**
* <p>Dispose a previously acquired [EMAIL PROTECTED] ComponentComposer}
instance.</p>
*
* <p>This method simply invokes the [EMAIL PROTECTED] #release()}
method.</p>
*
* @return this [EMAIL PROTECTED] ComponentComposer} instance.
*/
public void dispose(Object object) {
this.release(object);
}
/**
* <p>Contextualize this [EMAIL PROTECTED] ComponentComposer} with the
[EMAIL PROTECTED] Wirings}
* associated to the block where it resides.</p>
*
* @param wirings the [EMAIL PROTECTED] Wirings} instance associated with
the block in
* which this [EMAIL PROTECTED] ComponentComposer} was
deployed.
* @throws WiringException if there was an error performing operations
* on the supplied [EMAIL PROTECTED] Wirings}
instance.
*/
public void contextualize(Wirings wirings)
throws WiringException {
this.wirings = wirings;
}
/**
* <p>Configure this [EMAIL PROTECTED] ComponentComposer} instance with
the specified
* [EMAIL PROTECTED] Parameters}.</p>
*
* @param parameters the [EMAIL PROTECTED] Parameters} configuring the
instance.
* @throws ConfigurationException if this instance could not be
configured.
*/
public void configure(Parameters parameters)
throws ConfigurationException {
this.parameters = parameters;
}
}